protected String generateScript() {
    StringBuffer sb = new StringBuffer();

    generateScriptStart(sb);

    generateDeclarations(sb);
    generateInitMethod(sb);

    sb.append("\n");
    sb.append("\n");

    List expressions = sourceTask.getExpressions();
    sb.append(generateMethod(JRExpression.EVALUATION_DEFAULT, expressions));
    if (sourceTask.isOnlyDefaultEvaluation()) {
      List empty = new ArrayList();
      sb.append(generateMethod(JRExpression.EVALUATION_OLD, empty));
      sb.append(generateMethod(JRExpression.EVALUATION_ESTIMATED, empty));
    } else {
      sb.append(generateMethod(JRExpression.EVALUATION_OLD, expressions));
      sb.append(generateMethod(JRExpression.EVALUATION_ESTIMATED, expressions));
    }

    generateScriptEnd(sb);

    return sb.toString();
  }