Right now, ClientResources other interface-based components consist of an interface (ClientResources) and a default implementation (DefaultClientResources). Constructing a builder requires calling DefaultClientResources.builder(). We can improve by providing create() and builder() methods on the actual interface itself.
We should also provide mutation methods to mutate existing objects.