/**
  * Builds and returns an Eval Conditional Element
  *
  * @param context The current build context
  * @param utils The current build utils instance
  * @param patternBuilder not used by EvalBuilder
  * @param descr The Eval Descriptor to build the eval conditional element from
  * @return the Eval Conditional Element
  */
 public RuleConditionElement build(
     final RuleBuildContext context, final BaseDescr descr, final Pattern prefixPattern) {
   Appendable builder = new StringBuilderAppendable();
   EvalDescr edescr = (EvalDescr) descr;
   FunctionHandlers.dump((LispForm) edescr.getContent(), builder, true);
   edescr.setContent(builder.toString());
   return super.build(context, descr, prefixPattern);
 }
  public void dump(LispForm lispForm, Appendable appendable) {
    LispForm form = (LispForm) lispForm.getSExpressions()[1];

    String type = ((LispAtom) form.getSExpressions()[0]).getValue();

    appendable.append("insert( with ( new " + type + "() ) {");

    for (int i = 1, length = form.getSExpressions().length; i < length; i++) {
      LispForm slot = (LispForm) form.getSExpressions()[i];

      appendable.append(((LispAtom) slot.getSExpressions()[0]).getValue());

      appendable.append(" = ");

      FunctionHandlers.dump(slot.getSExpressions()[1], appendable);

      if (i != length - 1) {
        appendable.append(",");
      }
    }
    appendable.append("} );\n");
  }