Architecture
graph TB
subgraph Bag
direction TB
N1[BagNode<br/>label, value, attr]
N2[BagNode<br/>label, value, attr]
N3[BagNode<br/>label, value=Bag, attr]
end
subgraph NestedBag[Nested Bag]
direction TB
N4[BagNode]
N5[BagNode]
N6[BagNode]
end
N3 --> NestedBag
Access Patterns
flowchart LR
A["bag['a.b.c']"] --> B[Bag]
B --> C[BagNode 'a']
C --> D[Bag]
D --> E[BagNode 'b']
E --> F[Bag]
F --> G[BagNode 'c']
G --> H[value]
flowchart LR
A["bag['a?x']"] --> B[Bag]
B --> C[BagNode 'a']
C --> D["attr['x']"]
Core Components
Bag: Ordered container of BagNodes
BagNode: Single node with label, value, and attributes
Path: Dot-separated string for hierarchical access
Attribute: Key-value metadata attached to nodes