Program: 65716
Project: 65716
Buggy source:
/** 
 * Boolean -> BigDecimal true 	-> 1 others 	-> 0  Date -> BigDecimal Date.getTime(); String -> BigDecimal new BigDecimal(String);
 * @param source
 * @return
 * @throws BirtException
 */
public static BigDecimal toBigDecimal(Object source) throws BirtException {
  if (source == null)   return null;
  if (source instanceof BigDecimal) {
    return (BigDecimal)source;
  }
 else   if (source instanceof Number) {
    if (source instanceof Double && (((Double)source).isInfinite() || ((Double)source).isNaN()))     return null;
 else     if (source instanceof Float && (((Float)source).isInfinite() || ((Float)source).isNaN()))     return null;
    String str=((Number)source).toString();
    try {
      return new BigDecimal(str);
    }
 catch (    NumberFormatException e) {
      throw new CoreException(ResourceConstants.CONVERT_FAILS,new Object[]{str,"String_Node_Str"});
    }
  }
 else   if (source instanceof Boolean) {
    if (true == ((Boolean)source).booleanValue())     return new BigDecimal(1d);
    return new BigDecimal(0d);
  }
 else   if (source instanceof Date) {
    long longValue=((Date)source).getTime();
    return new BigDecimal(longValue);
  }
 else   if (source instanceof String) {
    try {
      return new BigDecimal((String)source);
    }
 catch (    NumberFormatException e) {
      try {
        Number number=NumberFormat.getInstance(JRE_DEFAULT_LOCALE).parse((String)source);
        if (number != null)         return new BigDecimal(number.toString());
        throw new CoreException(ResourceConstants.CONVERT_FAILS,new Object[]{source.toString(),"String_Node_Str"});
      }
 catch (      ParseException e1) {
        throw new CoreException(ResourceConstants.CONVERT_FAILS,new Object[]{source.toString(),"String_Node_Str"});
      }
    }
  }
 else {
    throw new CoreException(ResourceConstants.CONVERT_FAILS,new Object[]{source.toString(),"String_Node_Str"});
  }
}

Fixed version (ground truth):
/** 
 * Boolean -> BigDecimal true 	-> 1 others 	-> 0  Date -> BigDecimal Date.getTime(); String -> BigDecimal new BigDecimal(String);
 * @param source
 * @return
 * @throws BirtException
 */
public static BigDecimal toBigDecimal(Object source) throws BirtException {
  if (source == null)   return null;
  if (source instanceof BigDecimal) {
    return (BigDecimal)source;
  }
 else   if (source instanceof Number) {
    if (source instanceof Double && (((Double)source).isInfinite() || ((Double)source).isNaN()))     return null;
 else     if (source instanceof Float && (((Float)source).isInfinite() || ((Float)source).isNaN()))     return null;
    String str=((Number)source).toString();
    try {
      return new BigDecimal(str);
    }
 catch (    NumberFormatException e) {
      throw new CoreException(ResourceConstants.CONVERT_FAILS,new Object[]{str,"String_Node_Str"});
    }
  }
 else   if (source instanceof Boolean) {
    if (true == ((Boolean)source).booleanValue())     return new BigDecimal(1d);
    return new BigDecimal(0d);
  }
 else   if (source instanceof Date) {
    long longValue=((Date)source).getTime();
    return new BigDecimal(longValue);
  }
 else   if (source instanceof String) {
    if (((String)source).length() == 0) {
      return null;
    }
    try {
      return new BigDecimal((String)source);
    }
 catch (    NumberFormatException e) {
      try {
        Number number=NumberFormat.getInstance(JRE_DEFAULT_LOCALE).parse((String)source);
        if (number != null)         return new BigDecimal(number.toString());
        throw new CoreException(ResourceConstants.CONVERT_FAILS,new Object[]{source.toString(),"String_Node_Str"});
      }
 catch (      ParseException e1) {
        throw new CoreException(ResourceConstants.CONVERT_FAILS,new Object[]{source.toString(),"String_Node_Str"});
      }
    }
  }
 else {
    throw new CoreException(ResourceConstants.CONVERT_FAILS,new Object[]{source.toString(),"String_Node_Str"});
  }
}