feature(supports): refactoring cache into separate interface for reusability
feature(selector/focusable): adding support for shadowed elements (ShadowDOM)