internal static JToken ConvertValue( JToken data, IDataHost host )
{
if ( data == null )
return null;
var dataHost = data as IDataHost;
if ( dataHost != null && dataHost.Token == host.Token )
return data;
var obj = data as JObject;
if ( obj != null )
return new JsonDataObject( obj, host );
var array = data as JArray;
if ( array != null )
return new JsonDataArray( array, host );
if ( data is JContainer )
throw new InvalidOperationException();
return data;
}