code: @Override
  	protected Object doExec(Element element, Object scope, String propertyPath, Object... arguments) throws TemplateException {
  		if (!(propertyPath.equals(".") || isStrictObject(scope))) {
  			throw new TemplateException("OBJECT operator on element |%s| requires object scope but got value type |%s|.", element, scope.getClass());
  		}
  		Object value = content.getObject(scope, propertyPath);
  		if (value == null) {
  			log.warn("Null scope for property |%s| on element |%s|.", propertyPath, element);
  		} else if (!(propertyPath.equals(".") || isStrictObject(value))) {
  			throw new TemplateException(propertyPath, "Invalid content type. Expected strict object but got |%s|.", value.getClass());
  		}
  		return value;
  	}
docs: Execute object operator. This operator just returns the new object scope to be used by templates engine. Throws content
  exception if given property path does not designate an existing object. If requested object is null warn the event and
  return the null value. Templates engine consider returned null as fully processed branch signal.
  
  @param element context element,
  @param scope scope object,
  @param propertyPath object property path.
  @return new scope object or null.
  @throws TemplateException if given property path does not designate an existing object.