inventory Holder
The stable InventoryHolder shared by every inventory this menu opens. Read-only: it can't be replaced, but it is exposed so external code can identify "is this open/closed inventory mine?" via identity — inventory.holder === someMenu.inventoryHolder (every getMenu call builds a fresh Inventory but reuses this same holder).
Its own InventoryHolder.getInventory is only a fallback — it builds the menu with no viewer (getMenu(null)), so any per-viewer layout falls back to its default; real opens go through getMenu / openWithFreeSlots with the actual player.