Program: 143383
Project: 143383
Buggy source:
@Override public JSONWriter toJSON(JSONWriter writer,String key,Object formatValue,PropertyDescription pdd,DataConversion cc,IBrowserConverterContext dataConverterContext) throws JSONException {
  ComponentFormat format;
  if (formatValue == null || formatValue instanceof String) {
    JSONUtils.addKeyIfPresent(writer,key);
    return writer.value(null);
  }
  format=(ComponentFormat)formatValue;
  Map<String,Object> map=new HashMap<>();
  String type=Column.getDisplayTypeString(format.uiType);
  map.put("String_Node_Str",type);
  boolean isMask=format.parsedFormat.isMask();
  boolean isAllUppercase=format.parsedFormat.isAllUpperCase();
  boolean isAllLowercase=format.parsedFormat.isAllLowerCase();
  String mask=format.parsedFormat.getEditFormat();
  if (isMask && type.equals("String_Node_Str")) {
    mask=format.parsedFormat.getDateMask();
  }
 else   if (format.parsedFormat.getDisplayFormat() != null && type.equals("String_Node_Str")) {
    isMask=true;
    mask=format.parsedFormat.getDisplayFormat();
  }
  String placeHolder=null;
  if (format.parsedFormat.getPlaceHolderString() != null)   placeHolder=format.parsedFormat.getPlaceHolderString();
 else   if (format.parsedFormat.getPlaceHolderCharacter() != 0)   placeHolder=Character.toString(format.parsedFormat.getPlaceHolderCharacter());
  map.put("String_Node_Str",Boolean.valueOf(isMask));
  map.put("String_Node_Str",mask);
  map.put("String_Node_Str",placeHolder);
  map.put("String_Node_Str",format.parsedFormat.getAllowedCharacters());
  map.put("String_Node_Str",format.parsedFormat.getDisplayFormat());
  map.put("String_Node_Str",Boolean.valueOf(format.parsedFormat.isNumberValidator()));
  if (type.equals("String_Node_Str") || type.equals("String_Node_Str") || format.parsedFormat.isNumberValidator()) {
    BaseWebObject webObject=dataConverterContext.getWebObject();
    Locale clientLocale;
    if (webObject instanceof IContextProvider) {
      clientLocale=((IContextProvider)webObject).getDataConverterContext().getApplication().getLocale();
    }
 else {
      Debug.warn("String_Node_Str" + webObject.toString() + "String_Node_Str");
      clientLocale=Locale.getDefault();
    }
    DecimalFormatSymbols dfs=RoundHalfUpDecimalFormat.getDecimalFormatSymbols(clientLocale);
    map.put("String_Node_Str",String.valueOf(dfs.getDecimalSeparator()));
    map.put("String_Node_Str",String.valueOf(dfs.getGroupingSeparator()));
    map.put("String_Node_Str",dfs.getCurrencySymbol());
    map.put("String_Node_Str",String.valueOf(dfs.getPercent()));
  }
  if (format.parsedFormat.getMaxLength() != null) {
    map.put("String_Node_Str",format.parsedFormat.getMaxLength());
  }
  if (isAllUppercase)   map.put("String_Node_Str",Boolean.valueOf(isAllUppercase));
 else   if (isAllLowercase)   map.put("String_Node_Str",Boolean.valueOf(isAllLowercase));
  return JSONUtils.toBrowserJSONFullValue(writer,key,map,null,cc,null);
}

Fixed version (ground truth):
@Override public JSONWriter toJSON(JSONWriter writer,String key,Object formatValue,PropertyDescription pdd,DataConversion cc,IBrowserConverterContext dataConverterContext) throws JSONException {
  ComponentFormat format;
  if (formatValue == null || formatValue instanceof String) {
    JSONUtils.addKeyIfPresent(writer,key);
    return writer.value(null);
  }
  format=(ComponentFormat)formatValue;
  Map<String,Object> map=new HashMap<>();
  String type=Column.getDisplayTypeString(format.uiType);
  map.put("String_Node_Str",type);
  boolean isMask=format.parsedFormat.isMask();
  boolean isAllUppercase=format.parsedFormat.isAllUpperCase();
  boolean isAllLowercase=format.parsedFormat.isAllLowerCase();
  String mask=format.parsedFormat.getEditFormat();
  if (isMask && type.equals("String_Node_Str")) {
    mask=format.parsedFormat.getDateMask();
  }
 else   if (format.parsedFormat.getDisplayFormat() != null && type.equals("String_Node_Str")) {
    isMask=true;
    mask=format.parsedFormat.getDisplayFormat();
  }
  String placeHolder=null;
  if (format.parsedFormat.getPlaceHolderString() != null)   placeHolder=format.parsedFormat.getPlaceHolderString();
 else   if (format.parsedFormat.getPlaceHolderCharacter() != 0)   placeHolder=Character.toString(format.parsedFormat.getPlaceHolderCharacter());
  map.put("String_Node_Str",Boolean.valueOf(isMask));
  map.put("String_Node_Str",mask);
  map.put("String_Node_Str",placeHolder);
  map.put("String_Node_Str",format.parsedFormat.getAllowedCharacters());
  map.put("String_Node_Str",format.parsedFormat.getDisplayFormat());
  map.put("String_Node_Str",Boolean.valueOf(format.parsedFormat.isNumberValidator()));
  if (type.equals("String_Node_Str") || type.equals("String_Node_Str") || format.parsedFormat.isNumberValidator()) {
    BaseWebObject webObject=dataConverterContext.getWebObject();
    Locale clientLocale;
    if (webObject instanceof IContextProvider) {
      clientLocale=((IContextProvider)webObject).getDataConverterContext().getApplication().getLocale();
    }
 else {
      Debug.warn("String_Node_Str" + webObject.toString() + "String_Node_Str");
      clientLocale=Locale.getDefault();
    }
    DecimalFormatSymbols dfs=RoundHalfUpDecimalFormat.getDecimalFormatSymbols(clientLocale);
    map.put("String_Node_Str",String.valueOf(dfs.getPercent()));
  }
  if (format.parsedFormat.getMaxLength() != null) {
    map.put("String_Node_Str",format.parsedFormat.getMaxLength());
  }
  if (isAllUppercase)   map.put("String_Node_Str",Boolean.valueOf(isAllUppercase));
 else   if (isAllLowercase)   map.put("String_Node_Str",Boolean.valueOf(isAllLowercase));
  return JSONUtils.toBrowserJSONFullValue(writer,key,map,null,cc,null);
}