<div dir="ltr"><div>Hi all,</div><div><br></div><div>Following discussion during last meeting, I rewrote most of my PR for builders.</div><div><br></div><div>We now have 2 clean and distinct ways of using them</div><div><br></div><div>1) in DSL style (with a Configurator interface without build() method)</div><div><br></div><div>public void processAT(@Observes ProcessAnnotatedType&lt;?&gt; pat) {</div><div>  pat.setAnnotatedType().read(pat.getAnnotatedType()).addToType(new AnnotationLiteral&lt;MyInterceptor&gt;() {};);</div><div>}</div><div><br></div><div><br></div><div>2) In classical reusable builder mode (builders extends configurator and only add build() method)</div><div><br></div><div><div>public void processAT(@Observes ProcessAnnotatedType&lt;?&gt; pat) {</div><div> AnnotatedTypeBuilder atb = Builders.annotatedTypeBuilder();</div><div> atb.read(pat.getAnnotatedType()).addToType(new  AnnotationLiteral&lt;MyInterceptor&gt;() {};);</div><div>  pat.setAnnotatedType(atb.build());</div><div>}</div></div><div><br></div><div><br></div><div>As Configurators don&#39;t have build() method there&#39;s no risk that users mix them with standard builders.</div><div>For clarity sake, builders are no more available in lifecycle event but in Builders class for consistency.</div><div><br></div><div>I&#39;m quite happy with the result, but I&#39;m sure you&#39;ll have comment ;). So thanks for your feedback</div><div><br></div><div><a href="https://github.com/cdi-spec/cdi/pull/270">https://github.com/cdi-spec/cdi/pull/270</a><br></div><div><br></div><div>Antoine</div></div>