internal override bool OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, ref WriteStack state)
        {
            JsonTypeInfo jsonTypeInfo = state.Current.JsonTypeInfo;

            Debug.Assert(options == jsonTypeInfo.Options);

            if (!state.SupportContinuation &&
                jsonTypeInfo.HasSerializeHandler &&
                jsonTypeInfo is JsonTypeInfo <T> info &&
                !state.CurrentContainsMetadata && // Do not use the fast path if state needs to write metadata.
                info.Options.SerializerContext?.CanUseSerializationLogic == true)
            {
                Debug.Assert(info.SerializeHandler != null);
                info.SerializeHandler(writer, value);
                return(true);
            }

            jsonTypeInfo.ValidateCanBeUsedForMetadataSerialization();
            return(Converter.OnTryWrite(writer, value, options, ref state));
        }