public void addConnection(final V sourceVertex, final V targetEdge, E edge) {
        if (mEdgeContainerFactory == null) {
            throw new IllegalStateException("No EdgeContainerFactory is set for the Graph. Please make sure to add one");
        }

        if (sourceVertex == null || edge == null || targetEdge == null) {
            throw new IllegalArgumentException("None of the provided parameter can be null");
        }
        EdgeContainer edges = vertices.get(sourceVertex);
        if (edges == null) {
            edges = mEdgeContainerFactory.newEdgeContainer();
        }
        edges.addEdge(targetEdge, edge);
        vertices.put(sourceVertex, edges);
    }