use undefined value to indicate that StringNode is absent, null to
indicate that it's a self-closed tag