code: public T evaluate(Object target, Map<String, Object> variables) {
          SimpleBindings bindings = variables == null
                                    ? new SimpleBindings()
                                    : new SimpleBindings(variables);
          bindings.put("target", target);
  
          try {
              return (T) (script == null
                          ? scriptEngine.eval(getExpression(), bindings)
                          : script.eval(bindings));
          }
          catch (ScriptException e) {
              throw new RuntimeException(e);
          }
      }
docs: {@inheritDoc}