# RouteAst.Join

A Route AST node containing ordered child routes.

## Signatures

```ts
interface Join {
    type: "join";
    parts: ReadonlyArray<RouteAst>;
}
```

## Why

Composition retains child schema boundaries and parameter ownership.

## Ownership and lifetime

`Join` describes plain readonly AST data. Routes and Matchers retain the concrete nodes they receive by reference; the type itself owns no resource.

## Property: parts

The ordered child Route AST nodes in a join.

## Property: parts: Why

Formatting and schema merging preserve declaration order and detect duplicate decoded names.

## Property: parts: Ownership and lifetime

The join node retains the supplied readonly array and child nodes by reference; callers must
not mutate the array after construction.

## Property: type

The discriminant identifying this AST variant.

## Property: type: Why

Exhaustive switches can interpret syntax without instanceof checks or hidden classes.
