public static UndirectedGraph <int, Edge <int> > CreateGraphArrayOfNodesAndEdgesAssume([PexAssumeNotNull] int[] nodes,
                                                                                               [PexAssumeNotNull] bool[] edges)
        {
            //PexAssume.IsTrue(nodes.Length <= 7 || nodes.Length > 7);
            PexAssume.IsTrue(edges.Length <= 6 || nodes.Length > 6);
            PexAssume.IsTrue(edges.Length <= nodes.Length);
            PexAssume.AreDistinctValues(nodes);
            //PexAssume.TrueForAll(nodes, e => e != 0);

            UndirectedGraph <int, Edge <int> > g = new UndirectedGraph <int, Edge <int> >(false);

            foreach (int ele in nodes)
            {
                g.AddVertex(ele);
            }

            int source = PexChoose.IndexValue("indexed value", nodes);

            for (int i = 0; i < edges.Length; i++)
            {
                if (edges[i] == false)
                {
                    g.AddEdge(new Edge <int>(nodes[source], nodes[i]));
                }
            }
            return(g);
        }
        public static UndirectedGraph <int, Edge <int> > CreateGraphArrayOfNodesAndEdges([PexAssumeNotNull] int[] nodes,
                                                                                         [PexAssumeNotNull] bool[] edges)
        {
            PexAssume.IsTrue(edges.Length == nodes.Length);
            PexAssume.AreDistinctValues(nodes);
            PexAssume.TrueForAll(nodes, e => e <= 10 || e > 10);
            PexAssume.TrueForAll(nodes, e => e != 0);
            UndirectedGraph <int, Edge <int> > g = new UndirectedGraph <int, Edge <int> >(false);

            foreach (int ele in nodes)
            {
                g.AddVertex(ele);
            }
            for (int i = 0; i < edges.Length; i++)
            {
                int source = PexChoose.IndexValue("indexed value", nodes);
                PexObserve.ValueForViewing("CANED_SRC", source);
                if (edges[source] == false)
                {
                    g.AddEdge(new Edge <int>(nodes[source], nodes[i]));
                    g.AddEdge(new Edge <int>(nodes[i], nodes[i]));
                }
            }
            return(g);
        }