@Test
        @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
        @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_REMOVE_EDGES)
        @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
        @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_REMOVE_VERTICES)
        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
        @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
        @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_STRING_VALUES)
        public void shouldReadGraphMLWithCommonVertexAndEdgePropertyNames() throws IOException {
            final GraphReader reader = GraphMLReader.build().create();
            try (final InputStream stream = new ByteArrayInputStream(CLASSIC_GRAPH_WITH_COLOR.getBytes("UTF-8"))) {
                reader.readGraph(stream, graph);
            }

            // there is also a "color" property on this dataset that is on both edges and vertices
            graph.vertices().forEachRemaining(v -> assertEquals("#6495ed", v.value("color")));
            graph.edges().forEachRemaining(e -> assertEquals("#ee0000", e.value("color")));

            final GraphWriter writer = GraphMLWriter.build().create();
            try (final OutputStream out = new ByteArrayOutputStream()) {
                writer.writeGraph(out, graph);

                graph.vertices().forEachRemaining(Element::remove);
                if (graph.features().graph().supportsTransactions())
                    graph.tx().commit();
                try (final InputStream stream = new ByteArrayInputStream(((ByteArrayOutputStream) out).toByteArray())) {
                    reader.readGraph(stream, graph);
                }

                // there is also a "color" property on this dataset that is on both edges and vertices
                graph.vertices().forEachRemaining(v -> assertEquals("#6495ed", v.value("color")));
                graph.edges().forEachRemaining(e -> assertEquals("#ee0000", e.value("color")));
            }
        }
@author Joshua Shinavier (http://fortytwo.net)
@author Stephen Mallette (http://stephen.genoprime.com)
@author Marko A. Rodriguez (http://markorodriguez.com)
gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java