Java Selenium WebDriver example: how to create custom locators dynamically

 - Created custom search annotation.
 - Created custom search criteria enum.
 - BasePage implementation with several wrapped Selenium APIs.
 - Created custom elements' initializer via reflection with nested PageObjects inheritance support.
 - Created wrapper for By class, that implements dynamic locators' updater mechanism.
 - Created StringUtils with helper method for dynamic locators' updating.
 - SamplePage implementation with static and dynamic locators.
 - Simple test implementation with soft assertions mechanism.