1. Fix `private` visibility checking
2. Add `protected` visibility checking
3. Why we always `fetch` static property? It works much better if we do it like in `PropertyAccess` class (read or fetch)