code: @Override
      public Class<?> getType(ELContext context, Object base, Object property) {
  
          if (context == null) {
              throw new NullPointerException();
          }
  
          if (base == null && property instanceof String) {
              if (beanNameResolver.isNameResolved((String) property)) {
                  context.setPropertyResolved(true);
                  return beanNameResolver.getBean((String) property).getClass();
              }
          }
          return null;
      }
docs: If the base is null and the property is a name resolvable by
  the BeanNameResolver, return the type of the bean.
  
  <p>If the name is resolvable by the BeanNameResolver,
  the <code>propertyResolved</code> property of the
  <code>ELContext</code> object must be set to <code>true</code>
  by the resolver, before returning. If this property is not
  <code>true</code> after this method is called, the caller can
  safely assume no value has been set.</p>
  
  @param context The context of this evaluation.
  @param base <code>null</code>
  @param property The name of the bean.
  @return If the <code>propertyResolved</code> property of
  <code>ELContext</code> was set to <code>true</code>, then
  the type of the bean with the given name. Otherwise, undefined.
  @throws NullPointerException if context is <code>null</code>.
  @throws ELException if an exception was thrown while performing
  the property or variable resolution. The thrown exception
  must be included as the cause property of this exception, if
  available.