code: @Override
      public boolean collapseKamNode(KamNode collapsing, KamNode collapseTo)
              throws SQLException {
          if (collapsing == null)
              throw new InvalidArgument("collapsing node is null");
          if (collapseTo == null)
              throw new InvalidArgument("collapseTo node is null");
          if (collapsing.getKam() == null || collapseTo.getKam() == null
                  || collapsing.getKam() != collapseTo.getKam())
              throw new InvalidArgument("nodes reference invalid kams");
          if (collapsing.getId() == null || collapseTo.getId() == null)
              throw new InvalidArgument("node id is null");
  
          Kam kam = collapsing.getKam();
  
          PreparedStatement esps = getPreparedStatement(UPDATE_KAM_EDGES_SOURCE);
          PreparedStatement etps = getPreparedStatement(UPDATE_KAM_EDGES_TARGET);
          remapEdges(collapsing, collapseTo, kam, esps, etps);
  
          PreparedStatement utps = getPreparedStatement(UPDATE_TERM);
          remapTerms(collapsing, collapseTo, utps);
  
          PreparedStatement knps = getPreparedStatement(DELETE_KAM_NODE);
          PreparedStatement knpps = getPreparedStatement(DELETE_KAM_NODE_PARAMETER);
          removeKamNode(collapsing, knps, knpps);
  
          return true;
      }
docs: {@inheritDoc}