private static void WriteExecutionNode(Utf8JsonWriter writer, ExecutionNode node, JsonSerializerOptions options)
 {
     if (node is ValueExecutionNode valueExecutionNode)
     {
         WriteValue(writer, valueExecutionNode.ToValue(), options);
     }
     else if (node is ObjectExecutionNode objectExecutionNode)
     {
         if (objectExecutionNode.SubFields == null)
         {
             writer.WriteNullValue();
         }
         else
         {
             writer.WriteStartObject();
             foreach (var childNode in objectExecutionNode.SubFields)
             {
                 var propertyName = childNode.Name;
                 if (options.PropertyNamingPolicy != null)
                 {
                     propertyName = options.PropertyNamingPolicy.ConvertName(propertyName);
                 }
                 writer.WritePropertyName(propertyName);
                 WriteExecutionNode(writer, childNode, options);
             }
             writer.WriteEndObject();
         }
     }
     else if (node is ArrayExecutionNode arrayExecutionNode)
     {
         var items = arrayExecutionNode.Items;
         if (items == null)
         {
             writer.WriteNullValue();
         }
         else
         {
             writer.WriteStartArray();
             foreach (var childNode in items)
             {
                 WriteExecutionNode(writer, childNode, options);
             }
             writer.WriteEndArray();
         }
     }
     else if (node == null || node is NullExecutionNode)
     {
         writer.WriteNullValue();
     }
     else
     {
         WriteValue(writer, node.ToValue(), options);
     }
 }
 private void WriteExecutionNode(JsonWriter writer, ExecutionNode node, JsonSerializer serializer)
 {
     if (node is ValueExecutionNode valueExecutionNode)
     {
         serializer.Serialize(writer, valueExecutionNode.ToValue());
     }
     else if (node is ObjectExecutionNode objectExecutionNode)
     {
         if (objectExecutionNode.SubFields == null)
         {
             writer.WriteNull();
         }
         else
         {
             writer.WriteStartObject();
             foreach (var childNode in objectExecutionNode.SubFields)
             {
                 var propName = childNode.Name;
                 if (_namingStrategy != null)
                 {
                     propName = _namingStrategy.GetPropertyName(propName, false);
                 }
                 writer.WritePropertyName(propName);
                 WriteExecutionNode(writer, childNode, serializer);
             }
             writer.WriteEndObject();
         }
     }
     else if (node is ArrayExecutionNode arrayExecutionNode)
     {
         var items = arrayExecutionNode.Items;
         if (items == null)
         {
             writer.WriteNull();
         }
         else
         {
             writer.WriteStartArray();
             foreach (var childNode in items)
             {
                 WriteExecutionNode(writer, childNode, serializer);
             }
             writer.WriteEndArray();
         }
     }
     else if (node == null || node is NullExecutionNode)
     {
         writer.WriteNull();
     }
     else
     {
         serializer.Serialize(writer, node.ToValue());
     }
 }