code: private void createEdge(final Statement stmt, final int supporting,
              final ProtoNetwork pn, final ProtoNetworkBuilder pnb) {
          // add subject as term and proto node
          final Term subject = stmt.getSubject();
          final Integer sourceIndex = createNode(subject, supporting, pn, pnb);
  
          // add object as term and proto node
          final Term object = stmt.getObject().getTerm();
          final Integer objectIndex = createNode(object, supporting, pn, pnb);
  
          final ProtoEdgeTable pet = pn.getProtoEdgeTable();
          pet.addEdges(supporting, new ProtoEdgeTable.TableProtoEdge(sourceIndex,
                  stmt.getRelationshipType().getDisplayValue(), objectIndex));
      }
docs: Creates a proto edge for the {@link Statement statement} while
  preserving the original, supporting {@link Statement statement}.
  
  @param stmt the {@link Statement statement} to store, which cannot be
  {@code null}
  @param supporting the {@code int} statement index to associate as the
  original, supported statement
  @param pn the {@link ProtoNetwork proto network} to expand, which cannot
  be {@code null}
  @param pnb the {@link ProtoNetworkBuilder proto network builder} used
  to create proto nodes and edges, which cannot be {@code null}
  @throws InvalidArgument Thrown if {@code stmt}, {@code pn}, or
  {@code pnb} is {@code null}