public override TermsInclude? Read()

in src/Elastic.Clients.Elasticsearch/_Shared/Types/Aggregations/TermsInclude.cs [80:129]


	public override TermsInclude? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
	{
		if (reader.TokenType == JsonTokenType.Null)
		{
			reader.Read();
			return null;
		}

		TermsInclude termsInclude;

		switch (reader.TokenType)
		{
			case JsonTokenType.StartArray:
				var terms = JsonSerializer.Deserialize<string[]>(ref reader, options) ?? Array.Empty<string>();
				termsInclude = new TermsInclude(terms);
				break;
			case JsonTokenType.StartObject:
				long partition = 0;
				long numberOfPartitions = 0;
				while(reader.Read() && reader.TokenType != JsonTokenType.EndObject)
				{
					if (reader.TokenType == JsonTokenType.PropertyName)
					{
						var propertyName = reader.GetString();
						reader.Read();
						switch (propertyName)
						{
							case "partition":
								partition = reader.GetInt64();
								break;
							case "num_partitions":
								numberOfPartitions = reader.GetInt64();
								break;
							default:
								throw new JsonException($"Unexpected property name '{propertyName}' encountered when deserializing TermsInclude.");
						}
					}
				}
				termsInclude = new TermsInclude(partition, numberOfPartitions);
				break;
			case JsonTokenType.String:
				var regex = reader.GetString();
				termsInclude = new TermsInclude(regex!);
				break;
			default:
				throw new JsonException($"Unexpected token {reader.TokenType} when deserializing {nameof(TermsInclude)}");
		}

		return termsInclude;
	}