code: private static void markClusterEndPoints_(int geometry,
  			TopoGraph topoGraph, int clusterIndex) {
          int id = topoGraph.getGeometryID(geometry);
  
          for (int cluster = topoGraph.getFirstCluster(); cluster != -1; cluster = topoGraph.getNextCluster(cluster))
          {
              int cluster_parentage = topoGraph.getClusterParentage(cluster);
  
              if ((cluster_parentage & id) == 0)
                  continue;
  
              int first_half_edge = topoGraph.getClusterHalfEdge(cluster);
              if (first_half_edge == -1)
              {
                  topoGraph.setClusterUserIndex(cluster, clusterIndex, 0);
                  continue;
              }
  
              int next_half_edge = first_half_edge;
              int index = 0;
  
              do
              {
                  int half_edge = next_half_edge;
                  int half_edge_parentage = topoGraph.getHalfEdgeParentage(half_edge);
  
                  if ((half_edge_parentage & id) != 0)
                      index++;
  
                  next_half_edge = topoGraph.getHalfEdgeNext(topoGraph.getHalfEdgeTwin(half_edge));
  
              } while (next_half_edge != first_half_edge);
  
              topoGraph.setClusterUserIndex(cluster, clusterIndex, index);
          }
  
          return;
  	}
docs: the geometry and/or a boundary index of the geometry.