private void CreateOrUpdateAbstractNode(ConcreteNode node, Cluster cluster, int level, Dictionary <Vector2Int, AbstractNode> abstractDict, ref int abstractId)
    {
        AbstractNode abstractNode;

        if (abstractDict.TryGetValue(node.Pos, out abstractNode))
        {
            if (level > abstractNode.Level)
            {
                abstractNode.Level = level;
            }
        }
        else
        {
            cluster.AddEntrancePoint(abstractId, node);
            abstractNode = HPADemo.Instance.CreateAbstractNode(level, node.Pos);
            abstractNode.Init(abstractId, level, cluster.Id, node.Pos);
            abstractDict[node.Pos] = abstractNode;
            abstractId++;
        }
    }