TypeMatcher
Determines the appropriate mapping strategy for field transformations.
Converter resolution is pair-keyed and orientation-aware: per-field use= override (from @ConvertWith / @ConvertTo / @ConvertFrom) > @KMapperConfig custom registry (pair, either orientation) > built-in registry (pair, either orientation). Policy-only directives (onFail without use) never short-circuit discovery. A resolved pair whose needed direction is not provided → UnsupportedConversion compile error; no pair at all → MissingConverter compile error.
Parameters
Map of (sourceFqn to targetFqn) → converterFqn, populated from @KMapperConfig.
Map of wrapped-collection-FQN → validated wrapper descriptor (object FQN + provided wrap/unwrap directions), from @CollectionWrapper discovery.
Reads converter shapes (type pair + provided directions); null disables shape-aware resolution (every converter reference then errors as missing — tests only).
Constructors
Functions
Entry point per (sourceField, targetField) pair: runs field-level compile-time preconditions once, then resolves the strategy. Element-level recursion (collections, maps) bypasses the preconditions so they fire once per field, not per recursion step.
Returns true for the plain stdlib collection containers (List/MutableList/Set/MutableSet) only — excludes wrapped types like kotlinx.collections.immutable. Used as the unwrap direction's TARGET shape check: unwrap() lands on a plain collection by contract.