code: @Override
  	public Object getValue(ELContext context, Object base, Object property) {
  		if (context == null) {
  			throw new NullPointerException("context is null");
  		}
  		Object result = null;
  		if (isResolvable(base)) {
  			result = ((Map<?, ?>) base).get(property);
  			context.setPropertyResolved(true);
  		}
  		return result;
  	}
docs: If the base object is a map, returns the value associated with the given key, as specified by
  the property argument. If the key was not found, null is returned. If the base is a Map, the
  propertyResolved property of the ELContext object must be set to true by this resolver,
  before returning. If this property is not true after this method is called, the caller should
  ignore the return value. Just as in java.util.Map.get(Object), just because null is returned
  doesn't mean there is no mapping for the key; it's also possible that the Map explicitly maps
  the key to null.
  
  @param context
  The context of this evaluation.
  @param base
  The map to analyze. Only bases of type Map are handled by this resolver.
  @param property
  The key to return the acceptable type for. Ignored by this resolver.
  @return If the propertyResolved property of ELContext was set to true, then the value
  associated with the given key or null if the key was not found. Otherwise, undefined.
  @throws ClassCastException
  if the key is of an inappropriate type for this map (optionally thrown by the
  underlying Map).
  @throws NullPointerException
  if context is null, or if the key is null and this map does not permit null keys
  (the latter is optionally thrown by the underlying Map).
  @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.