remove method

IVariant? remove(
  1. Iterable<IVariant> variantsToRemove
)

Implementation

IVariant? remove(Iterable<IVariant> variantsToRemove) {
  final remainingVariants = <IVariant>[];

  for (var variant in variants) {
    if (variant is MultiVariant) {
      final remaining = variant.remove(variantsToRemove);
      if (remaining != null) {
        remainingVariants.add(remaining);
      }
    } else {
      if (!variantsToRemove.contains(variant)) {
        remainingVariants.add(variant);
      }
    }
  }

  if (remainingVariants.isEmpty) {
    return null;
  }

  return remainingVariants.length == 1
      ? remainingVariants.first
      : MultiVariant(remainingVariants, type: operatorType);
}