code: @Override
      public Object getValue(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(base, property);
                  return beanNameResolver.getBean((String) property);
              }
          }
          return null;
      }
docs: If the base object is <code>null</code> and the property is a name
  that is resolvable by the BeanNameResolver, returns the value
  resolved by the BeanNameResolver.
  
  <p>If name is resolved by the BeanNameResolver, the
  <code>propertyResolved</code> property of the <code>ELContext</code>
  object must be set to <code>true</code> by this resolver, before
  returning. If this property is not <code>true</code> after this
  method is called, the caller should ignore the return value.</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 value 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.