docs: private MetricalIndexTree<O, N, E> getMetricalIndex(Relation<? extends O> relation) throws IllegalStateException {
      MetricalIndexTree<O, N, E> ret = null;
      for(It<MetricalIndexTree<O, N, E>> iter = relation.getHierarchy().iterDescendants(relation).filter(MetricalIndexTree.class); iter.valid(); iter.advance()) {
        if(ret != null) {
          throw new IllegalStateException("More than one metrical index found - this is not supported!");
        }
        // FIXME: check we got the right the representation
        ret = iter.get();
      }
      if(ret == null) {
        throw new IllegalStateException("No metrical index found!");
      }
      return ret;
    }