//Genera una conexión entre dos nodos preexistentes
    public void AddConnection()
    {
        if (_lastRightClickedNode == null || _lastLeftClickedNode == null)
        {
            return;
        }

        /* Ya que hay nodos que no pueden tener ciertos tipos de padre (el nodo respuesta no puede
         * tener otro nodo respuesta como padre) chequeo que la conexión que se intente hacer sea válida */

        #region Checkeo legacy, para referencia
        //if ((_lastLeftClickedNode is StartNode && _lastRightClickedNode is ProductNode)
        //          || (_lastLeftClickedNode is ProductNode && _lastRightClickedNode is OptionNode)
        //          || (_lastLeftClickedNode is OptionNode && _lastRightClickedNode is ProductNode)
        //          || (_lastLeftClickedNode is EndNode && _lastRightClickedNode is OptionNode)
        //	|| (_lastLeftClickedNode is ComparativeNode && _lastRightClickedNode is OptionNode))

        #endregion
        if (_lastLeftClickedNode.CanTransitionTo(_lastRightClickedNode))
        {
            /* Si la conexión es válida seteo al ultimo nodo en el cual se hizo click
             * izquierdo como el padre del ultimo nodo en el que se hizo click derecho */
            _lastRightClickedNode.SetParent(_lastLeftClickedNode);
            if (_lastLeftClickedNode is INeedsChildren)
            {
                ((INeedsChildren)_lastLeftClickedNode).AssignChild(_lastRightClickedNode, 0);
            }
        }
    }
    public void AddConnection(BaseNode origin, BaseNode target)
    {
        if (target == null || origin == null)
        {
            return;
        }

        /* Ya que hay nodos que no pueden tener ciertos tipos de padre (el nodo respuesta no puede
         * tener otro nodo respuesta como padre) chequeo que la conexión que se intente hacer sea válida */

        #region Checkeo legacy, para referencia
        //if ((origin is StartNode && target is ProductNode)
        //          || (origin is ProductNode && target is OptionNode)
        //          || (origin is OptionNode && target is ProductNode)
        //          || (origin is EndNode && target is OptionNode)
        //	|| (origin is ComparativeNode && target is OptionNode))

        #endregion
        if (origin.CanTransitionTo(target))
        {
            /* Si la conexión es válida seteo al ultimo nodo en el cual se hizo click
             * izquierdo como el padre del ultimo nodo en el que se hizo click derecho */
            target.SetParent(origin);
            if (origin is INeedsChildren)
            {
                ((INeedsChildren)origin).AssignChild(target, 0);
            }
        }
    }
    public void AddFalseConnection(BaseNode origin, BaseNode target)
    {
        if (target == null || origin == null)
        {
            return;
        }

        if (origin.CanTransitionTo(target))
        {
            /* Si la conexión es válida seteo al ultimo nodo en el cual se hizo click
             * izquierdo como el padre del ultimo nodo en el que se hizo click derecho */
            target.SetParent(origin);
            if (origin is INeedsChildren)
            {
                ((INeedsChildren)origin).AssignChild(target, 1);
            }
        }
    }