public void addHyperedgeInNode(HyperEdge hyperEdge){
  if (hyperEdge != null) {
    if (null == hyperedges)     hyperedges=new ArrayList<>();
    hyperedges.add(hyperEdge);
    semiringPlus(hyperEdge);
  }
}

public void addHyperedgeInNode ( HyperEdge hyperEdge ) { if ( hyperEdge != null ) { if ( null == hyperedges ) hyperedges = new ArrayList < > ( ) ; hyperedges . add ( hyperEdge ) ; semiringPlus ( hyperEdge ) ; } }
adds the hyperedge to the list of incoming hyperedges ( i . e . , ways to form this node ) , creating the list if necessary . we then update the cache of the best incoming hyperedge via a call to the ( obscurely named ) semiringplus ( ) .
