public T Deserialize <T>(string data)
        {
            ValidationUtils.ArgumentNotNull(data, nameof(data));

            var result = JsonUtility.FromJson <Data <T> >(data);

            ValidationUtils.ArgumentWrongType(result.Type != typeof(T).FullName, nameof(T));

            return(result.Value);
        }
        public object Deserialize(string data, Type type)
        {
            ValidationUtils.ArgumentNotNull(data, nameof(data));
            ValidationUtils.ArgumentNotNull(type, nameof(type));

            Type genericDataType = typeof(Data <>).MakeGenericType(type);
            var  result          = (IData)JsonUtility.FromJson(data, genericDataType);

            ValidationUtils.ArgumentWrongType(result.Type != type.FullName, nameof(type));

            return(result.ObjValue);
        }