I like the idea of having an ```AuthenticationBuilder``` class, but I'm respectfully not totally convinced by your implementation. I would expect the following usage :
```Authentication a = AuthenticationBuilder.newInstance().addDate(date)....build();```
I don't check thoroughfully in all the source code but are the *setter* and the ```newInstance(source)``` methods really useful ?