I stumbled upon one case where HeuristicPojoProcessor can cause this. In visitEnd(), it tests separately whether an implementation has services, references, or properties (as determined by previous introspectors). If an implementation has services but no references or properties, it will fall into calcPropRefs() which will turn unannotated setters into properties.
One would think that the first thing HeuristicPojoProcessor.visitEnd() should do is if (!type.getServices().isEmpty() || !type.getReferenceMembers().isEmpty() || !type.getPropertyMembers().isEmpty()) return; If all 3 are empty, then it can do its thing. But visitEnd() also calls evaluateConstructor() in 2 places, including when it knows there are references or properties. I'm not sure why it's trying to evaluate constructors in an annotated POJO. Greg