# NullablePod class final

A special marker pod instance that represents a nullable or absent pod value.

The NullablePod class serves as a sentinel value to distinguish between:

- A pod that explicitly has a `null` value
- A pod that doesn't exist in the registry at all

This is particularly useful in dependency injection frameworks and pod management systems where you need to differentiate between "no pod found" and "pod found but its value is null".

## Key Use Cases:

- Placeholder for nullable dependencies: When a pod can legitimately be null
- Optional dependency marker: To indicate optional dependencies that weren't resolved
- Configuration absence: Represent missing configuration values explicitly
- Testing: Mock or stub scenarios where null values need special handling

## Usage Example:

    class PodContainer {
      final Map<String, Object?> _pods = {};

      void registerPod(String name, Object? pod) {
        _pods[name] = pod ?? NullablePod(); // Use NullablePod for explicit null
      }

      Object? getPod(String name) {
        final pod = _pods[name];
        if (pod is NullablePod) {
          return null; // Convert back to actual null
        }
        return pod;
      }

      bool containsPod(String name) {
        return _pods.containsKey(name);
      }

      bool isExplicitlyNull(String name) {
        return _pods[name] is NullablePod;
      }
    }

    void main() {
      final container = PodContainer();

      // Register different types of values
      container.registerPod('existingPod', 'actual value');
      container.registerPod('nullPod', null); // Stored as NullablePod
      // 'missingPod' is not registered at all

      print(container.containsPod('existingPod')); // true
      print(container.containsPod('nullPod')); // true
      print(container.containsPod('missingPod')); // false

      print(container.isExplicitlyNull('existingPod')); // false
      print(container.isExplicitlyNull('nullPod')); // true
      print(container.isExplicitlyNull('missingPod')); // false

      print(container.getPod('existingPod')); // 'actual value'
      print(container.getPod('nullPod')); // null
      print(container.getPod('missingPod')); // null
    }

## Equality Semantics:

All instances of NullablePod are considered equal to each other, as they all represent the same concept of "explicit null". This allows for consistent comparison and usage in collections.

Mixed-in types
  - EqualsAndHashCode

## Constructors

NullablePod.new()
  Creates a new NullablePod instance.

## Properties

hashCode → int
  The hash code for this object.
  no setter inherited
runtimeType → Type
  A representation of the runtime type of the object.
  no setter inherited

## Methods

equalizedProperties() → List<Object?>
  Mixin-style contract for value-based equality, `hashCode`, and `toString`.
  override
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a nonexistent method or property is accessed.
  inherited
toString() → String
  A string representation of this object.
  override

## Operators

operator ==(Object other) → bool
  The equality operator.
  inherited

## Static Properties

CLASS → Class
  The Class instance representing the NullablePod type.
  final
NAME → String
  The name of the NullablePod type.
  final