/// <typeparam name="P">Path</typeparam>
        /// <typeparam name="E">Edge</typeparam>
        /// <typeparam name="V">Vertex</typeparam>
        /// <typeparam name="W">Weight</typeparam>
        /// <param name="edges">list of edges</param>
        public static void ValidateEdgesForGraphCreation <P, E, V, W>(IList <E> edges)
            where P : PathGenerics <E, V, W>
            where E : EdgeGenerics <V, W>
            where V : Vertex
            where W : Weight
        {
            GraphEdgesValidator <P, E, V, W> graphEdgesValidator = CreateGraphEdgesValidator <P, E, V, W>();

            graphEdgesValidator.ValidateEdgesAsAcceptableInputForGraphConstruction(edges);
        }
        public void setUp()
        {
            graphEdgesValidator = GraphEdgesValidator <Path, Edge, Vertex, Weight> .CreateGraphEdgesValidator <Path, Edge, Vertex, Weight>();

            vertexA                   = createTestVertex("A");
            vertexB                   = createTestVertex("B");
            vertexC                   = createTestVertex("C");
            vertexD                   = createTestVertex("D");
            vertexWithNullAsId        = createTestVertex(null);
            vertexWithEmptyStringAsId = createTestVertex("");
            vertexWithSomeSpacesAsId  = createTestVertex("   ");

            // interface method for Weight use primitive type as return type in method: "public double getWeightValue()"
            // i.e. since it does not return an instance of class "Double" (capital "D") we do not have any null value tests here
            weight5 = createTestWeight(5);
            weight6 = createTestWeight(6);
            weight7 = createTestWeight(7);

            mapForValidatingUniqueEdgeId      = new Dictionary <string, bool>();
            mapForValidatingUniqueVerticesIds = new Dictionary <string, bool>();
        }