public static <T> void filterVariants(List<T> variants, GenericDomValue<? extends List<T>> genericDomValue) {
    final List<T> list = genericDomValue.getValue();
    if (list != null) {
      for (Iterator<T> i = variants.iterator(); i.hasNext(); ) {
        final T variant = i.next();
        for (T existing : list) {
          if (existing.equals(variant)) {
            i.remove();
            break;
          }
        }
      }
    }
  }
public static <T> void filterVariants(List<T> variants, GenericDomValue<? extends List<T>> genericDomValue)