code:     public Object compile(String expression, Map<String, Object> context) throws OgnlException {
          Object tree;
          if (enableExpressionCache) {
              tree = expressions.get(expression);
              if (tree == null) {
                  tree = Ognl.parseExpression(expression);
                  expressions.putIfAbsent(expression, tree);
              }
          } else {
              tree = Ognl.parseExpression(expression);
          }
  
          if (!enableEvalExpression && isEvalExpression(tree, context)) {
              throw new OgnlException("Eval expressions has been disabled");
          }
  
          return tree;
      }
  
      /**
       * Copies the properties in the object "from" and sets them in the object "to"
       * using specified type converter, or {@link com.opensymphony.xwork2.conversion.impl.XWorkConverter} if none
       * is specified.
       *
       * @param from       the source object
       * @param to         the target object
       * @param context    the action context we're running under
       * @param exclusions collection of method names to excluded from copying ( can be null)
       * @param inclusions collection of method names to included copying  (can be null)
       *                   note if exclusions AND inclusions are supplied and not null nothing will get copied.
       */
  