public void HandleQueue(DataQueue queue)
    {
        BaseEntity root;
        BaseEntity refering;
        GameObject go;

        if (queue.GetFromQueue(out root, out refering))
        {
            Node rootNode = root != null?nodes.ContainsKey(root.Id) ? nodes[root.Id] : null : null;

            Node referingNode = refering != null?nodes.ContainsKey(refering.Id) ? nodes[refering.Id] : null : null;

            if (root != null && rootNode == null)
            {
                go = CreateNode(root.Id);
                NodeInformation nodeInfo = go.GetComponent <NodeInformation>();
                nodes[nodeInfo.node.ID] = nodeInfo.node;
                rootNode        = nodeInfo.node;
                nodeInfo.entity = root;
            }

            if (refering != null && referingNode == null)
            {
                go = CreateNode(refering.Id);
                NodeInformation nodeInfo = go.GetComponent <NodeInformation>();
                nodes[nodeInfo.node.ID] = nodeInfo.node;
                referingNode            = nodeInfo.node;
                nodeInfo.entity         = refering;
            }

            if (rootNode != null && referingNode != null)
            {
                go = CreateEdge(rootNode, referingNode);
                EdgeInformation edgeInfo = go.GetComponent <EdgeInformation>();
            }
        }
    }