My experience while writing an annotation processor - part I