private bool CanUnserializeAndPaste(string data)
        {
            GraphClipboardData clipboardData = null;

            try
            {
                clipboardData = JsonUtility.FromJson <GraphClipboardData>(data);
            }
            catch
            {
                return(false);
            }
            return(clipboardData == null || NodeGraph.GetType() == Type.GetType(clipboardData.GraphTypeName));
        }
        private void UnserializeAndPasteGraphElements(string operationName, string data)
        {
            GraphClipboardData copiedData = JsonUtility.FromJson <GraphClipboardData>(data);

            if (operationName == "Paste" || operationName == "Duplicate")
            {
                Undo.RegisterCompleteObjectUndo(NodeGraph, "Paste Graph Elements");

                Vector2      pos            = m_mousePosition - new Vector2(contentViewContainer.transform.position.x, contentViewContainer.transform.position.y);
                List <ANode> clipboardNodes = SanitizeClipboardElements(copiedData.GetGraphElements(), pos);
                LoadSanitizedClipboardNodes(clipboardNodes);
            }
            else
            {
                Debug.Log("OTHER Operation " + operationName + "\n" + data);
            }
        }
        private string CopyAndSerializeGraphElements(IEnumerable <GraphElement> elements)
        {
            GraphClipboardData data = new GraphClipboardData(NodeGraph, elements);

            return(JsonUtility.ToJson(data, true));
        }