annotation processor factory