Install (or remove) the wrapper; drops everything memoised so far.
If attrs is an array_ref, return its (memoised) target and shape-derived
metadata. Returns null when no resolution is needed (caller should keep
the original array/attrs).
OptionallogPrefix: string
Memo of resolved array_ref targets: one open + one wrap per (store, target path), reused across updates. Before it, every update re-ran
zarr.openon the target and read it through an UNWRAPPED array, so each revisit re-fetched and re-decoded the target's chunks. Invalidation: a new dataset is a new store object (aWeakMapmiss), and an L0 clear moves the wrapper's epoch. A failed open is not memoised.