code: protected TypeElement getInjectedType(VariableElement variableElement) {
      final TypeElement fieldType;
      if (getParamInjectionTargetKind(variableElement) == ParamInjectionTarget.Kind.INSTANCE) {
        fieldType = (TypeElement) typeUtils.asElement(typeUtils.erasure(variableElement.asType()));
      } else {
        fieldType = getKindParameter(variableElement);
      }
      return fieldType;
    }
docs: Retrieves the type of a field or param. The type can be the type of the parameter
  in the java way (e.g. {@code B b}, type is {@code B}); but it can also be the type of
  a {@link toothpick.Lazy} or {@link javax.inject.Provider}
  (e.g. {@code Lazy&lt;B&gt; b}, type is {@code B} not {@code Lazy}).
  
  @param variableElement the field or variable element. NOT his type !
  @return the type has defined above.