# System.Text.Json.Serialization.Metadata

``` diff
 namespace System.Text.Json.Serialization.Metadata {
     public static class JsonMetadataServices {
-        public static JsonTypeInfo<TElement[]> CreateArrayInfo<TElement>(JsonSerializerOptions options, JsonTypeInfo elementInfo, JsonNumberHandling numberHandling);

+        public static JsonTypeInfo<TElement[]> CreateArrayInfo<TElement>(JsonSerializerOptions options, JsonTypeInfo elementInfo, JsonNumberHandling numberHandling, Action<Utf8JsonWriter, TElement[]> serializeFunc);
-        public static JsonTypeInfo<TCollection> CreateDictionaryInfo<TCollection, TKey, TValue>(JsonSerializerOptions options, Func<TCollection> createObjectFunc, JsonTypeInfo keyInfo, JsonTypeInfo valueInfo, JsonNumberHandling numberHandling) where TCollection : Dictionary<TKey, TValue>;

+        public static JsonTypeInfo<TCollection> CreateDictionaryInfo<TCollection, TKey, TValue>(JsonSerializerOptions options, Func<TCollection> createObjectFunc, JsonTypeInfo keyInfo, JsonTypeInfo valueInfo, JsonNumberHandling numberHandling, Action<Utf8JsonWriter, TCollection> serializeFunc) where TCollection : Dictionary<TKey, TValue>;
-        public static JsonTypeInfo<TCollection> CreateListInfo<TCollection, TElement>(JsonSerializerOptions options, Func<TCollection> createObjectFunc, JsonTypeInfo elementInfo, JsonNumberHandling numberHandling) where TCollection : List<TElement>;

+        public static JsonTypeInfo<TCollection> CreateListInfo<TCollection, TElement>(JsonSerializerOptions options, Func<TCollection> createObjectFunc, JsonTypeInfo elementInfo, JsonNumberHandling numberHandling, Action<Utf8JsonWriter, TCollection> serializeFunc) where TCollection : List<TElement>;
-        public static JsonTypeInfo<T> CreateObjectInfo<T>();

+        public static JsonTypeInfo<T> CreateObjectInfo<T>(JsonSerializerOptions options, Func<T> createObjectFunc, Func<JsonSerializerContext, JsonPropertyInfo[]> propInitFunc, JsonNumberHandling numberHandling, Action<Utf8JsonWriter, T> serializeFunc);
-        public static void InitializeObjectInfo<T>(JsonTypeInfo<T> info, JsonSerializerOptions options, Func<T> createObjectFunc, Func<JsonSerializerContext, JsonPropertyInfo[]> propInitFunc, JsonNumberHandling numberHandling);

     }
     public class JsonTypeInfo {
-        public static readonly Type ObjectType;

     }
     public abstract class JsonTypeInfo<T> : JsonTypeInfo {
+        public Action<Utf8JsonWriter, T> Serialize { get; }
     }
 }
```

