@RequiresBackgroundThread
  public synchronized @NotNull SimilarUsage clusterUsage(@NotNull SimilarUsage similarUsageAdapter) {
    UsageCluster cluster = getTheMostSimilarCluster(similarUsageAdapter.getFeatures());
    if (cluster == null) {
      cluster = createNewCluster();
    }
    cluster.addUsage(similarUsageAdapter);
    return similarUsageAdapter;
  }
@RequiresBackgroundThread
  public synchronized @NotNull SimilarUsage clusterUsage(@NotNull SimilarUsage similarUsageAdapter)