Program: 143371
Project: 143371
Buggy source:
protected void updatePropertyValueForRecord(FoundsetTypeSabloValue foundsetPropertyValue,String rowIDValue,Object value,PropertyDescription wrappedPropertyDescription,IBrowserConverterContext dataConverterContext){
  IFoundSetInternal foundset=foundsetPropertyValue.getFoundset();
  Pair<String,Integer> splitHashAndIndex=FoundsetTypeSabloValue.splitPKHashAndIndex(rowIDValue);
  if (foundset != null) {
    int recordIndex=foundset.getRecordIndex(splitHashAndIndex.getLeft(),splitHashAndIndex.getRight().intValue());
    if (recordIndex != -1) {
      foundsetPropertyValue.getDataAdapterList().setRecordQuietly(foundset.getRecord(recordIndex));
      viewPortChangeMonitor.pauseRowUpdateListener(splitHashAndIndex.getLeft());
      try {
        YT newWrappedValue=(YT)JSONUtils.fromJSONUnwrapped(wrappedSabloValue,value,wrappedPropertyDescription,dataConverterContext);
        if (newWrappedValue != wrappedSabloValue) {
          if (wrappedSabloValue instanceof IDataLinkedPropertyValue)           ((IDataLinkedPropertyValue)wrappedSabloValue).detach();
          wrappedSabloValue=newWrappedValue;
          if (wrappedSabloValue instanceof IDataLinkedPropertyValue)           ((IDataLinkedPropertyValue)wrappedSabloValue).attachToBaseObject(changeMonitor,component);
          viewPortChangeMonitor.viewPortCompletelyChanged();
        }
      }
 catch (      JSONException e) {
        Debug.error("String_Node_Str" + wrappedPropertyDescription + "String_Node_Str"+ value+ "String_Node_Str",e);
      }
 finally {
        viewPortChangeMonitor.resumeRowUpdateListener();
      }
    }
 else {
      Debug.error("String_Node_Str" + rowIDValue + "String_Node_Str"+ wrappedPropertyDescription+ "String_Node_Str"+ value+ "String_Node_Str"+ component+ "String_Node_Str",new RuntimeException());
    }
  }
 else {
    Debug.error("String_Node_Str" + rowIDValue + "String_Node_Str"+ wrappedPropertyDescription+ "String_Node_Str"+ value+ "String_Node_Str"+ component+ "String_Node_Str",new RuntimeException());
  }
}

Fixed version (ground truth):
protected void updatePropertyValueForRecord(FoundsetTypeSabloValue foundsetPropertyValue,String rowIDValue,Object value,PropertyDescription wrappedPropertyDescription,IBrowserConverterContext dataConverterContext){
  IFoundSetInternal foundset=foundsetPropertyValue.getFoundset();
  Pair<String,Integer> splitHashAndIndex=FoundsetTypeSabloValue.splitPKHashAndIndex(rowIDValue);
  if (foundset != null) {
    int recordIndex=foundset.getRecordIndex(splitHashAndIndex.getLeft(),splitHashAndIndex.getRight().intValue());
    if (recordIndex != -1) {
      foundsetPropertyValue.getDataAdapterList().setRecordQuietly(foundset.getRecord(recordIndex));
      viewPortChangeMonitor.pauseRowUpdateListener(splitHashAndIndex.getLeft());
      try {
        ValueReference<Boolean> returnValueAdjustedIncommingValueForRow=new ValueReference<Boolean>(Boolean.FALSE);
        YT newWrappedValue=(YT)JSONUtils.fromJSONUnwrapped(wrappedSabloValue,value,wrappedPropertyDescription,dataConverterContext,returnValueAdjustedIncommingValueForRow);
        if (newWrappedValue != wrappedSabloValue) {
          if (wrappedSabloValue instanceof IDataLinkedPropertyValue)           ((IDataLinkedPropertyValue)wrappedSabloValue).detach();
          wrappedSabloValue=newWrappedValue;
          if (wrappedSabloValue instanceof IDataLinkedPropertyValue)           ((IDataLinkedPropertyValue)wrappedSabloValue).attachToBaseObject(changeMonitor,component);
          viewPortChangeMonitor.viewPortCompletelyChanged();
        }
 else         if (returnValueAdjustedIncommingValueForRow.value.booleanValue()) {
          FoundsetTypeViewport viewPort=foundsetPropertyValue.getViewPort();
          int firstViewPortIndex=Math.max(viewPort.getStartIndex(),recordIndex);
          int lastViewPortIndex=Math.min(viewPort.getStartIndex() + viewPort.getSize() - 1,recordIndex);
          if (firstViewPortIndex <= lastViewPortIndex) {
            viewPortChangeMonitor.queueOperation(firstViewPortIndex - viewPort.getStartIndex(),lastViewPortIndex - viewPort.getStartIndex(),firstViewPortIndex,lastViewPortIndex,foundsetPropertyValue.getFoundset(),RowData.CHANGE);
          }
        }
      }
 catch (      JSONException e) {
        Debug.error("String_Node_Str" + wrappedPropertyDescription + "String_Node_Str"+ value+ "String_Node_Str",e);
      }
 finally {
        viewPortChangeMonitor.resumeRowUpdateListener();
      }
    }
 else {
      Debug.error("String_Node_Str" + rowIDValue + "String_Node_Str"+ wrappedPropertyDescription+ "String_Node_Str"+ value+ "String_Node_Str"+ component+ "String_Node_Str",new RuntimeException());
    }
  }
 else {
    Debug.error("String_Node_Str" + rowIDValue + "String_Node_Str"+ wrappedPropertyDescription+ "String_Node_Str"+ value+ "String_Node_Str"+ component+ "String_Node_Str",new RuntimeException());
  }
}