Program: 79228
Project: 79228
Buggy source:
/** 
 * Converts the result type into one accepted by BIRT: Double (for all numeric types), java.util.Date, String, Boolean. 
 */
public static Object convertNativeObjToJavaObj(Object inputObj){
  if (logger.isLoggable(Level.FINER))   logger.entering(ScriptEvalUtil.class.getName(),"String_Node_Str",LogUtil.toString(inputObj));
  if (inputObj instanceof Scriptable) {
    String jsClass=((Scriptable)inputObj).getClassName();
    if (jsClass.equals("String_Node_Str")) {
      if (logger.isLoggable(Level.FINER))       logger.exiting(ScriptEvalUtil.class.getName(),"String_Node_Str",new Date((long)Context.toNumber(inputObj)));
      return new Date((long)Context.toNumber(inputObj));
    }
 else     if (jsClass.equals("String_Node_Str")) {
      if (logger.isLoggable(Level.FINER))       logger.exiting(ScriptEvalUtil.class.getName(),"String_Node_Str",new Boolean(Context.toBoolean(inputObj)));
      return new Boolean(Context.toBoolean(inputObj));
    }
 else     if (jsClass.equals("String_Node_Str")) {
      if (logger.isLoggable(Level.FINER))       logger.exiting(ScriptEvalUtil.class.getName(),"String_Node_Str",new Double(Context.toNumber(inputObj)));
      return new Double(Context.toNumber(inputObj));
    }
 else {
      if (logger.isLoggable(Level.FINER))       logger.exiting(ScriptEvalUtil.class.getName(),"String_Node_Str",inputObj.toString().trim());
      return inputObj.toString();
    }
  }
  if (logger.isLoggable(Level.FINER))   logger.exiting(ScriptEvalUtil.class.getName(),"String_Node_Str",inputObj);
  return inputObj;
}

Fixed version (ground truth):
/** 
 * Converts the result type into one accepted by BIRT: Double (for all numeric types), java.util.Date, String, Boolean. 
 */
public static Object convertNativeObjToJavaObj(Object inputObj){
  if (logger.isLoggable(Level.FINER))   logger.entering(ScriptEvalUtil.class.getName(),"String_Node_Str",LogUtil.toString(inputObj));
  if (inputObj instanceof Scriptable) {
    String jsClass=((Scriptable)inputObj).getClassName();
    if (jsClass.equals("String_Node_Str")) {
      if (logger.isLoggable(Level.FINER))       logger.exiting(ScriptEvalUtil.class.getName(),"String_Node_Str",new Date((long)Context.toNumber(inputObj)));
      return new Date((long)Context.toNumber(inputObj));
    }
 else     if (jsClass.equals("String_Node_Str")) {
      if (logger.isLoggable(Level.FINER))       logger.exiting(ScriptEvalUtil.class.getName(),"String_Node_Str",new Boolean(Context.toBoolean(inputObj)));
      return new Boolean(Context.toBoolean(inputObj));
    }
 else     if (jsClass.equals("String_Node_Str")) {
      if (logger.isLoggable(Level.FINER))       logger.exiting(ScriptEvalUtil.class.getName(),"String_Node_Str",new Double(Context.toNumber(inputObj)));
      return new Double(Context.toNumber(inputObj));
    }
 else {
      if (logger.isLoggable(Level.FINER))       logger.exiting(ScriptEvalUtil.class.getName(),"String_Node_Str",inputObj.toString().trim());
      return inputObj.toString();
    }
  }
 else   if (inputObj != null && inputObj.toString().equalsIgnoreCase("String_Node_Str"))   inputObj=null;
  if (logger.isLoggable(Level.FINER))   logger.exiting(ScriptEvalUtil.class.getName(),"String_Node_Str",inputObj);
  return inputObj;
}