# Expressions

Serialization support for LINQ Expression trees and `IQueryable` objects. Converts expressions to a format-agnostic DTO (`AcExpressionNode`) that can be serialized by any of the three serializer formats.

## Key Files

- **`AcExpressionNode.cs`** — DTO representing any Expression node. Contains `ConstantValueType` enum (20+ values) for typed constant representation. Recursive structure mirrors the expression tree.
- **`AcExpressionConverter.cs`** — Converts `Expression` → `AcExpressionNode`. Handles all expression types (lambda, binary, member access, method call, etc.).
- **`AcExpressionRebuilder.cs`** — Converts `AcExpressionNode` → `Expression`. Reconstructs the full expression tree from the DTO.
- **`AcExpressionHelper.cs`** — Expression utilities shared across the module.

## Integration

- Automatically triggered in JSON and Toon serializers when an `Expression` or `IQueryable` is encountered during serialization.
- Binary serializer supports expressions via compiled expression delegates.
- `AcSerializerCommon.cs` (parent folder) provides expression type checking helpers (`ExpressionType`, `ExpressionGenericType`).

## Dependencies

- `System.Linq.Expressions`
- `AcSerializerCommon` from parent `Serializers/` folder
