﻿<?xml version="1.0" encoding="utf-8"?>
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
  <Library Name="*Newtonsoft.Json*">
    <Type Name="Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo" Dynamic="Required Public" />
    <Type Name="Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]" Dynamic="Required Public" />
    <Type Name="Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags" Dynamic="Required Public" />
    <Type Name="Microsoft.CSharp.RuntimeBinder.Binder" Dynamic="Required Public" />
    <TypeInstantiation Name="System.Collections.Generic.IEnumerable" Arguments="Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo" Dynamic="Required Public" />

    <Namespace Name="Newtonsoft.Json">
      <Type Name="JsonConvert">
        <Method Name="DeserializeObject">
          <TypeParameter Name="type" Serialize="Required All" />
        </Method>
        <Method Name="DeserializeObject{T}">
          <GenericParameter Name="T" Serialize="Required All" />
        </Method>
        <Method Name="DeserializeObjectAsync{T}">
          <GenericParameter Name="T" Serialize="Required All" />
        </Method>
        <Method Name="PopulateObject">
          <Parameter Name="target" Serialize="Required All" />
        </Method>
        <Method Name="PopulateObjectAsync">
          <Parameter Name="target" Serialize="Required All" />
        </Method>
        <Method Name="SerializeObject">
          <Parameter Name="value" Serialize="Required All" />
        </Method>
        <Method Name="SerializeObjectAsync">
          <Parameter Name="value" Serialize="Required All" />
        </Method>
      </Type>
      <Type Name="JsonSerializer">
        <Method Name="Deserialize">
          <TypeParameter Name="objectType" Serialize="Required All" />
        </Method>
        <Method Name="Populate">
          <Parameter Name="target" Serialize="Required All" />
        </Method>
        <Method Name="Serialize">
          <Parameter Name="value" Serialize="Required All" />
        </Method>
      </Type>
      <Type Name="JsonConverterAttribute">
        <Method Name=".ctor">
          <TypeParameter Name="converterType" Activate="Required All" />
        </Method>
      </Type>
      <Type Name="OnErrorAttribute">
        <AttributeImplies Dynamic="Required All" />
      </Type>
      <Type Name="JsonConstructorAttribute">
        <AttributeImplies Dynamic="Required All" />
      </Type>
      <Type Name="JsonObjectAttribute">
        <AttributeImplies Serialize="Required All" />
      </Type>
      <Type Name="JsonPropertyAttribute">
        <AttributeImplies Serialize="Required All" />
      </Type>
    </Namespace>

    <Namespace Name="System.Runtime.Serialization">
      <Type Name="DataContractAttribute">
        <AttributeImplies Serialize="Required All" />
      </Type>
      <Type Name="DataMemberAttribute">
        <AttributeImplies Serialize="Required All" />
      </Type>
      <Type Name="OnSerializingAttribute">
        <AttributeImplies Dynamic="Required All" />
      </Type>
      <Type Name="OnSerializedAttribute">
        <AttributeImplies Dynamic="Required All" />
      </Type>
      <Type Name="OnDeserializingAttribute">
        <AttributeImplies Dynamic="Required All" />
      </Type>
      <Type Name="OnDeserializedAttribute">
        <AttributeImplies Dynamic="Required All" />
      </Type>
    </Namespace>

    <Type Name="System.Collections.Generic.IEnumerable{T}">
      <ImpliesType Name="Newtonsoft.Json.Utilities.CollectionWrapper{T}" Serialize="Required Public" />
    </Type>
    <Type Name="System.Collections.Generic.IList{T}">
      <ImpliesType Name="Newtonsoft.Json.Utilities.ListWrapper{T}" Serialize="Required Public" />
      <ImpliesType Name="Newtonsoft.Json.Utilities.CollectionWrapper{T}" Serialize="Required Public" />
    </Type>
    <Type Name="System.Collections.Generic.IReadOnlyDictionary{TKey,TValue}">
      <ImpliesType Name="System.Collections.Generic.Dictionary{TKey,TValue}" Serialize="Required Public" />
      <ImpliesType Name="System.Collections.ObjectModel.ReadOnlyDictionary{TKey,TValue}" Serialize="Required Public" />
      <ImpliesType Name="System.Collections.Generic.Dictionary{TKey,TValue}" Serialize="Required Public" />
      <ImpliesType Name="Newtonsoft.Json.Utilities.DictionaryWrapper{TKey,TValue}" Serialize="Required Public" />
    </Type>
    <Type Name="System.Collections.Generic.IDictionary{TKey,TValue}">
      <ImpliesType Name="System.Collections.Generic.Dictionary{TKey,TValue}" Serialize="Required Public" />
      <ImpliesType Name="System.Collections.ObjectModel.ReadOnlyDictionary{TKey,TValue}" Serialize="Required Public" />
      <ImpliesType Name="System.Collections.Generic.Dictionary{TKey,TValue}" Serialize="Required Public" />
      <ImpliesType Name="Newtonsoft.Json.Utilities.DictionaryWrapper{TKey,TValue}" Serialize="Required Public" />
    </Type>
    <Type Name="T[]">
      <ImpliesType Name="System.Collections.Generic.List{T}" Serialize="Required Public" />
      <ImpliesType Name="System.Collections.Generic.ICollection{T}" Serialize="Required Public" />
      <ImpliesType Name="Newtonsoft.Json.Utilities.CollectionWrapper{T}" Serialize="Required Public" />
    </Type>
    <Type Name="System.Collections.ObjectModel.ReadOnlyCollection{T}">
      <ImpliesType Name="System.Collections.Generic.IEnumerable{T}" Serialize="Required Public"/>
      <ImpliesType Name="System.Collections.Generic.List{T}" Serialize="Required Public"/>
    </Type>
    <Type Name="System.Collections.Generic.ISet{T}">
      <ImpliesType Name="System.Collections.Generic.HashSet{T}" Serialize="Required Public" />
    </Type>
  </Library>
</Directives>