# PodInstantiationProcessor class abstract

An abstract class in Jetleaf that builds upon `AwarePodProcessor`.

This allows you to hook into the instantiation phase of a Pod lifecycle, providing extension points to:

- Intercept before instantiation.
- Intercept after instantiation.
- Process or override property values before they are applied.

Example:

    class CustomInstantiationProcessor
        implements PodInstantiationProcessor {
      @override
      Object? beforeInstantiation(Class podClass, String name) {
        print('Preparing to create pod: $name of type ${podClass.name}');
        return null;
      }

      @override
      bool afterInstantiation(Object pod, Class podClass, String name) {
        print('Pod $name created successfully.');
        return true;
      }

      @override
      PropertyValues? processPropertyValues(
          PropertyValues pvs, Object pod, String name) {
        // Modify or inspect property values before applying
        return pvs;
      }

      @override
      Object? beforeInitialization(Object pod, Class podClass, String name) => pod;

      @override
      Object? afterInitialization(Object pod, Class podClass, String name) => pod;
    }

Inheritance
  - Object
  - PodProcessor
  - PodInstantiationProcessor

## Constructors

PodInstantiationProcessor.new()

## 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

determineCandidateArguments(String podName, Executable executable, List<Parameter> parameters) → Future<List<ArgumentValue>?>
  Determine the arguments to use for the given pod.
determineCandidateConstructors(Class podClass, String name) → Future<List<Constructor>?>
  Determine the candidate constructors to use for the given pod.
getEarlyPodReference(ObjectHolder<Object> podHolder, Class podClass, String name) → Future<ObjectHolder<Object>>
  Early Pod Reference
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a nonexistent method or property is accessed.
  inherited
processAfterInitialization(Object pod, Class podClass, String name) → Future<Object?>
  Apply this post-processor to the given new pod instance after any pod initialization callbacks.
  inherited
processAfterInstantiation(Object pod, Class podClass, String name) → Future<bool>
  Perform operations after the pod has been instantiated but before property population.
processBeforeInitialization(Object pod, Class podClass, String name) → Future<Object?>
  Apply this post-processor to the given new pod instance before any pod initialization callbacks.
  inherited
processBeforeInstantiation(Class podClass, String name) → Future<Object?>
  Apply this post-processor before the target pod gets instantiated.
processPropertyValues(PropertyValues pvs, Object pod, Class podClass, String name) → Future<PropertyValues?>
  Post-process the given property values before the factory applies them to the given pod.
shouldProcessBeforeInitialization(Object pod, Class podClass, String name) → Future<bool>
  Determine whether this post-processor should be applied to the given pod.
  inherited
toString() → String
  A string representation of this object.
  inherited

## Operators

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