There's 3 types.
- String (1)
- Symbol
- Public Symbol (2)
- Private Symbol (3)
And 2 enumeration modes.
- Exclude Symbols
- Include Symbols
Filter out all Symbols. So (2) and (3) are filtered.
In that case, hash lookups are not necessary because we just check the target is isSymbol().
Filter out private symbols. So (3) is filtered. In that case, we need to check with hash lookups.