Source:
private void parseHenson(TypeElement element, Map<TypeElement, InjectionTarget> targetClassMap, Set<TypeMirror> erasedTargetTypes) { if (!isValidUsageOfHenson(HensonNavigable.class, element)) { return; } InjectionTarget hensonNavigableTarget = getOrCreateTargetClass(targetClassMap, element); AnnotationMirror hensonAnnotationMirror = getAnnotationMirror(element, HensonNavigable.class); TypeMirror modelTypeMirror = getHensonModelMirror(hensonAnnotationMirror); if (modelTypeMirror != null) { TypeElement modelElement = (TypeElement) typeUtils.asElement(modelTypeMirror); if (!"Void".equals(modelElement.getSimpleName())) { if (isDebugEnabled) { System.out.printf("HensonNavigable class %s uses model class %s\n", element.getSimpleName(), modelElement.getSimpleName()); } final InjectionTarget modelInjectionTarget; if (targetClassMap.containsKey(modelElement)) { modelInjectionTarget = getOrCreateTargetClass(targetClassMap, modelElement); } else { modelInjectionTarget = scanTypeForInjectExtras(modelElement); TypeMirror erasedTargetType = typeUtils.erasure(modelElement.asType()); erasedTargetTypes.add(erasedTargetType); } modelInjectionTarget.isModel = true; InjectionTarget superInjectionTarget = findInjectionTargetForSuperTypeWithInjectExtra( modelElement, modelInjectionTarget); if (superInjectionTarget != null) { modelInjectionTarget.injectionMap.putAll(superInjectionTarget.injectionMap); } hensonNavigableTarget.injectionMap.putAll(modelInjectionTarget.injectionMap); hensonNavigableTarget.parentTarget = modelInjectionTarget.parentTarget; } } TypeMirror erasedTargetType = typeUtils.erasure(element.asType()); erasedTargetTypes.add(erasedTargetType); }

Target:
private void parseHenson(TypeElement element, Map<TypeElement, InjectionTarget> targetClassMap, Set<TypeMirror> erasedTargetTypes) { if (!isValidUsageOfHenson(HensonNavigable.class, element)) { return; } InjectionTarget hensonNavigableTarget = getOrCreateTargetClass(targetClassMap, element); findParentAndInheritInjectionMap(element, hensonNavigableTarget); AnnotationMirror hensonAnnotationMirror = getAnnotationMirror(element, HensonNavigable.class); TypeMirror modelTypeMirror = getHensonModelMirror(hensonAnnotationMirror); if (modelTypeMirror != null) { TypeElement modelElement = (TypeElement) typeUtils.asElement(modelTypeMirror); if (!"Void".equals(modelElement.getSimpleName())) { if (isDebugEnabled) { System.out.printf("HensonNavigable class %s uses model class %s\n", element.getSimpleName(), modelElement.getSimpleName()); } final InjectionTarget modelInjectionTarget; if (targetClassMap.containsKey(modelElement)) { modelInjectionTarget = getOrCreateTargetClass(targetClassMap, modelElement); } else { modelInjectionTarget = scanTypeForInjectExtras(modelElement); TypeMirror erasedTargetType = typeUtils.erasure(modelElement.asType()); erasedTargetTypes.add(erasedTargetType); } modelInjectionTarget.isModel = true; findParentAndInheritInjectionMap(modelElement, modelInjectionTarget); hensonNavigableTarget.injectionMap.putAll(modelInjectionTarget.injectionMap); hensonNavigableTarget.parentTarget = modelInjectionTarget.parentTarget; } } TypeMirror erasedTargetType = typeUtils.erasure(element.asType()); erasedTargetTypes.add(erasedTargetType); }