docs: @SuppressWarnings("unchecked")
    private void checkAliases(Class<?> parent, String classname, String[] parts) {
      Class<?> c = ELKIServiceRegistry.findImplementation((Class<Object>) parent, classname);
      if(c == null) {
        return;
      }
      Alias ann = c.getAnnotation(Alias.class);
      if(ann == null) {
        if(parts.length > 1) {
          StringBuilder buf = new StringBuilder(100) //
              .append("Class ").append(classname) //
              .append(" in ").append(parent.getCanonicalName()) //
              .append(" has the following extraneous aliases:");
          for(int i = 1; i < parts.length; i++) {
            buf.append(' ').append(parts[i]);
          }
          LOG.warning(buf);
        }
        return;
      }
      HashSet<String> aliases = new HashSet<String>();
      for(int i = 1; i < parts.length; i++) {
        aliases.add(parts[i]);
      }
      StringBuilder buf = null;
      for(String a : ann.value()) {
        if(!aliases.remove(a)) {
          if(buf == null) {
            buf = new StringBuilder(100) //
                .append("Class ").append(classname) //
                .append(" in ").append(parent.getCanonicalName()) //
                .append(" is missing the following aliases:");
          }
          buf.append(' ').append(a);
        }
      }
      if(!aliases.isEmpty()) {
        buf = (buf == null ? new StringBuilder() : buf.append(FormatUtil.NEWLINE)) //
            .append("Class ").append(classname) //
            .append(" in ").append(parent.getCanonicalName()) //
            .append(" has the following extraneous aliases:");
        for(String a : aliases) {
          buf.append(' ').append(a);
        }
      }
      if(buf != null) {
        LOG.warning(buf);
      }
    }