Buggy code:
public class InterceptorClassDescription { public static final InterceptorClassDescription EMPTY_INSTANCE = new InterceptorClassDescription . Builder ( ) . build ( ) ; private final MethodIdentifier aroundInvoke ; private final MethodIdentifier aroundTimeout ; private final MethodIdentifier preDestroy ; private final MethodIdentifier postConstruct ; private final MethodIdentifier prePassivate ; private final MethodIdentifier postActivate ; public InterceptorClassDescription ( final MethodIdentifier aroundInvoke , final MethodIdentifier aroundTimeout , final MethodIdentifier preDestroy , final MethodIdentifier postConstruct , final MethodIdentifier postActivate , final MethodIdentifier prePassivate ) { } public static InterceptorClassDescription merge ( InterceptorClassDescription existing , InterceptorClassDescription override ) { if ( ( existing == null ) && ( override == null ) ) { return InterceptorClassDescription . EMPTY_INSTANCE ; } if ( override == null ) { return existing ; } if ( existing == null ) { return override ; } final InterceptorClassDescription . Builder builder = InterceptorClassDescription . builder ( existing ) ; if ( ( override . getAroundInvoke ( ) ) != null ) { builder . setAroundInvoke ( override . getAroundInvoke ( ) ) ; } if ( ( override . getAroundTimeout ( ) ) != null ) { builder . setAroundTimeout ( override . getAroundTimeout ( ) ) ; } if ( ( override . getPostConstruct ( ) ) != null ) { builder . setPostConstruct ( override . getPostConstruct ( ) ) ; } if ( ( override . getPreDestroy ( ) ) != null ) { builder . setPreDestroy ( override . getPreDestroy ( ) ) ; } if ( ( override . getPrePassivate ( ) ) != null ) { builder . setPrePassivate ( override . getPrePassivate ( ) ) ; } if ( ( override . getPostActivate ( ) ) != null ) { <START_BUG> builder . setPrePassivate ( override . getPostActivate ( ) ) ; <END_BUG> } return builder . build ( ) ; } public static InterceptorClassDescription . Builder builder ( ) { } public static InterceptorClassDescription . Builder builder ( InterceptorClassDescription base ) { } public static class Builder { private MethodIdentifier aroundInvoke ; private MethodIdentifier aroundTimeout ; private MethodIdentifier preDestroy ; private MethodIdentifier postConstruct ; private MethodIdentifier prePassivate ; private MethodIdentifier postActivate ; Builder ( ) { } Builder ( InterceptorClassDescription existing ) { } public InterceptorClassDescription build ( ) { } public MethodIdentifier getAroundInvoke ( ) { } public void setAroundInvoke ( final MethodIdentifier aroundInvoke ) { } public MethodIdentifier getAroundTimeout ( ) { } public void setAroundTimeout ( final MethodIdentifier aroundTimeout ) { } public MethodIdentifier getPostConstruct ( ) { } public void setPostConstruct ( final MethodIdentifier postConstruct ) { } public MethodIdentifier getPreDestroy ( ) { } public void setPreDestroy ( final MethodIdentifier preDestroy ) { } public MethodIdentifier getPrePassivate ( ) { } public void setPrePassivate ( final MethodIdentifier prePassivate ) { } public MethodIdentifier getPostActivate ( ) { } public void setPostActivate ( final MethodIdentifier postActivate ) { } } public MethodIdentifier getAroundInvoke ( ) { } public MethodIdentifier getAroundTimeout ( ) { } public MethodIdentifier getPostConstruct ( ) { } public MethodIdentifier getPreDestroy ( ) { } public MethodIdentifier getPrePassivate ( ) { } public MethodIdentifier getPostActivate ( ) { } }

Fix:
builder . setPostActivate ( override . getPostActivate ( ) ) ;