private static NodeData DeserializeNodeData(Dictionary <string, object> dict, Task task)
        {
            NodeData nodeData = new NodeData();
            object   obj;

            if (dict.TryGetValue("Offset", out obj))
            {
                nodeData.Offset = JSONDeserializationDeprecated.StringToVector2((string)obj);
            }
            if (dict.TryGetValue("FriendlyName", out obj))
            {
                task.FriendlyName = (string)obj;
            }
            if (dict.TryGetValue("Comment", out obj))
            {
                nodeData.Comment = (string)obj;
            }
            if (dict.TryGetValue("IsBreakpoint", out obj))
            {
                nodeData.IsBreakpoint = Convert.ToBoolean(obj);
            }
            if (dict.TryGetValue("Collapsed", out obj))
            {
                nodeData.Collapsed = Convert.ToBoolean(obj);
            }
            if (dict.TryGetValue("ColorIndex", out obj))
            {
                nodeData.ColorIndex = Convert.ToInt32(obj);
            }
            if (dict.TryGetValue("WatchedFields", out obj))
            {
                nodeData.WatchedFieldNames = new List <string>();
                nodeData.WatchedFields     = new List <FieldInfo>();
                IList list = obj as IList;
                for (int i = 0; i < list.Count; i++)
                {
                    FieldInfo field = task.GetType().GetField((string)list[i], BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
                    if (field != null)
                    {
                        nodeData.WatchedFieldNames.Add(field.Name);
                        nodeData.WatchedFields.Add(field);
                    }
                }
            }
            return(nodeData);
        }
        private static object ValueToObject(Task task, Type type, object obj, IVariableSource variableSource, List <UnityEngine.Object> unityObjects)
        {
            if (type.Equals(typeof(SharedVariable)) || type.IsSubclassOf(typeof(SharedVariable)))
            {
                SharedVariable sharedVariable = JSONDeserializationDeprecated.DeserializeSharedVariable(obj as Dictionary <string, object>, variableSource, false, unityObjects);
                if (sharedVariable == null)
                {
                    sharedVariable = (TaskUtility.CreateInstance(type) as SharedVariable);
                }
                return(sharedVariable);
            }
            if (type.Equals(typeof(UnityEngine.Object)) || type.IsSubclassOf(typeof(UnityEngine.Object)))
            {
                return(JSONDeserializationDeprecated.IndexToUnityObject(Convert.ToInt32(obj), unityObjects));
            }
            if (!type.IsPrimitive)
            {
                if (!type.Equals(typeof(string)))
                {
                    goto IL_C5;
                }
            }
            try
            {
                object result = Convert.ChangeType(obj, type);
                return(result);
            }
            catch (Exception)
            {
                object result = null;
                return(result);
            }
IL_C5:
            if (type.IsSubclassOf(typeof(Enum)))
            {
                try
                {
                    object result = Enum.Parse(type, (string)obj);
                    return(result);
                }
                catch (Exception)
                {
                    object result = null;
                    return(result);
                }
            }
            if (type.Equals(typeof(Vector2)))
            {
                return(JSONDeserializationDeprecated.StringToVector2((string)obj));
            }
            if (type.Equals(typeof(Vector3)))
            {
                return(JSONDeserializationDeprecated.StringToVector3((string)obj));
            }
            if (type.Equals(typeof(Vector4)))
            {
                return(JSONDeserializationDeprecated.StringToVector4((string)obj));
            }
            if (type.Equals(typeof(Quaternion)))
            {
                return(JSONDeserializationDeprecated.StringToQuaternion((string)obj));
            }
            if (type.Equals(typeof(Matrix4x4)))
            {
                return(JSONDeserializationDeprecated.StringToMatrix4x4((string)obj));
            }
            if (type.Equals(typeof(Color)))
            {
                return(JSONDeserializationDeprecated.StringToColor((string)obj));
            }
            if (type.Equals(typeof(Rect)))
            {
                return(JSONDeserializationDeprecated.StringToRect((string)obj));
            }
            if (type.Equals(typeof(LayerMask)))
            {
                return(JSONDeserializationDeprecated.ValueToLayerMask(Convert.ToInt32(obj)));
            }
            if (type.Equals(typeof(AnimationCurve)))
            {
                return(JSONDeserializationDeprecated.ValueToAnimationCurve((Dictionary <string, object>)obj));
            }
            object obj2 = TaskUtility.CreateInstance(type);

            JSONDeserializationDeprecated.DeserializeObject(task, obj2, obj as Dictionary <string, object>, variableSource, unityObjects);
            return(obj2);
        }