Just brainstorming. Kind of inspired by Google's new Truth library (which removes parenthesis hell from matchers in test assertions). Maybe something like...
button().id("foo").css(".bar").htmlTag("a");
// as opposed to
button(By.chained(By.id("foo"), By.css("bar"), By.htmlTag("a")));
// customer locators
button(new BySalesforce()).section("Foo").label("bar");
Not sure how much of a real concern this is