Right; that is explicit... I'm wondering though if the method needs to be protected in the first place? (I don't see any overriding so far).

If not, then maybe this whole IF block where this is called could be replaced by a single method, e.g.:

```
private boolean targetIsDirectReplyProducingHandler(Object targetObject, String targetMethodName) {
   return (this.extractTypeIfPossible(targetObject, AbstractReplyProducingMessageHandler.class) != null
	&& this.canBeUsedDirect(targetObject) // give subclasses a say
	&& (!StringUtils.hasText(targetMethodName)
				|| "handleMessage".equals(targetMethodName));
}
```

That way all the assumptions are together (at the point where the method name is checked, it's gotta be an instance of AbstractReplyProducingMessageHandler).