Actually, it's better to go with the builder approach and remove the setProvider method: because the provider cannot be changed after directory creation, it shouldn't even be available on the Directory interface.  It's only relevant to set it during directory creation time, and that's what a `CreateDirectoryRequest` can be used for.

It's better to limit scope of what is possible rather than dealing with IllegalStateExceptions - makes for cleaner, more reliable code.

So, let's do that: let's create the `CreateDirectoryRequest` / builder pattern and remove the setProvider method.