@Override
  public Object @NotNull [] getVariants() {
    List<Object> result = new ArrayList<>();
    collectVariants(result, new HashSet<>());
    return ArrayUtil.toObjectArray(result);
  }
@Override
  public Object @NotNull [] getVariants()