remove method

Wait remove({
  1. required Object? flag,
  2. Object? ref,
})

Implementation

Wait remove({required Object? flag, Object? ref}) {
  if (_flags.isEmpty)
    return this;
  else {
    Map<Object?, Set<Object?>> newFlags = _deepCopy();

    if (ref == null) {
      newFlags.remove(flag);
    } else {
      Set<Object?> refs = newFlags[flag] ?? {};
      refs.remove(ref);
      if (refs.isEmpty) newFlags.remove(flag);
    }

    if (newFlags.isEmpty)
      return empty;
    else
      return Wait._(newFlags);
  }
}