@Override
  public Class<?> getType(ELContext context, Object base, Object property) {

    if (context == null) {
      throw new NullPointerException();
    }
    if (base != null || !(property instanceof String)) {
      return null;
    }

    String beanName = (String) property;

    try {
      if (beanNameResolver.isNameResolved(beanName)) {
        Class<?> result = beanNameResolver.getBean(beanName).getClass();
        context.setPropertyResolved(base, property);
        return result;
      }
    } catch (Throwable t) {
      Util.handleThrowable(t);
      throw new ELException(t);
    }

    return null;
  }