V result;
if (type.isArray()) {
result = getArrayInjectValue(habitat, component, onBehalfOf, target, genericType, type);
} else {
Inject inject = target.getAnnotation(Inject.class);
if (Types.isSubClassOf(type, Holder.class)){
result = getHolderInjectValue(habitat, component, onBehalfOf, target, genericType, type, inject);
} else {
if (habitat.isContract(type)) {
result = getServiceInjectValue(habitat, component, onBehalfOf, target, genericType, type, inject);