The scala compiler is architected according to the "wing it" model. In this case that means the decision as to whether to synthesize getters and setters is made before symbols are available, so it attempts to identify @BeanProperty annotations based on whether they spell out "BeanProperty".
In other words it's not a real annotation - it's a pattern match on source code.
def hasAnnotationNamed(name: TypeName) = {
annotations exists {
case Apply(Select(New(Ident(`name`)), _), _) => true
case Apply(Select(New(Select(_, `name`)), _), _) => true
case _ => false
}
}