code: @Override
      public KamEdge createEdge(Integer kamEdgeId, KamNode sourceNode,
              RelationshipType relationshipType, KamNode targetNode)
              throws InvalidArgument {
  
          // Make sure the nodes are valid for this graph
          if (!contains(sourceNode)) {
              throw new InvalidArgument("source Node is not in graph");
          }
          if (!contains(targetNode)) {
              throw new InvalidArgument("target Node is not in graph");
          }
  
          // See if the edge already exists
          KamEdge kamEdge =
                  new KamEdgeImpl(this, kamEdgeId, sourceNode, relationshipType,
                          targetNode);
          if (!edgeIdMap.containsKey(kamEdge)) {
              // add this edge into the graph
              addEdge(kamEdge);
          }
          return kamEdge;
      }
docs: {@inheritDoc}