But I have thought another approach, which will not break the compatibility with previous versions, how about create a class called Options which implements Map and it has only gettter/setter, so users can call all of them as usually, but they can use OptionsBuilder too as a DSL to chain all calls: For example:

```java
Options options = new Options();
options.setCompact(true);
options.setToDir("...");
```
but also some they can do:
```java
Options options = options().compact(true).toDir("...").get();
```

I think it won't break compatibility and maybe more intuitive?