public override object ReadJson( JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer )
{
var data = serializer.Deserialize<JObject>( reader );
var items = FromJson( data );
if ( objectType == typeof( ItemList ) )
return new ItemList( items );
else if ( objectType == typeof( ItemCollection ) )
return new ItemCollection( items );
else
throw new NotSupportedException();
}