removeDependency<T extends Object> method

Option<Dependency<T>> removeDependency<T extends Object>({
  1. Entity groupEntity = const DefaultEntity(),
})

Removes the dependency keyed under exact type T in groupEntity, using the same key construction as setDependency (Sync<T> / Async<T>). If the group becomes empty after removal, the group itself is removed.

This is strict by design: a Lazy<T> registration is keyed under Sync<Lazy<T>> and is NOT matched here — callers wanting to remove a lazy must call removeDependency<Lazy<T>>() (or unregisterLazy<T>() at the DIBase layer). Keeping the key space identical on insert and remove avoids the silent "register-a-lazy-and-fail-to-find-it" trap.

Implementation

@pragma('vm:prefer-inline')
Option<Dependency<T>> removeDependency<T extends Object>({
  Entity groupEntity = const DefaultEntity(),
}) {
  return removeDependencyK(
    TypeEntity(T),
    groupEntity: groupEntity,
  ).map((e) => e.transf<T>());
}