Program: 168925
Project: 168925
Buggy source:
@SuppressWarnings({"String_Node_Str","String_Node_Str"}) public FullEntityViewUpdater(ViewType<?> viewType){
  this.entityClass=viewType.getEntityClass();
  Set<MethodAttribute<?,?>> attributes=(Set<MethodAttribute<?,?>>)(Set)viewType.getAttributes();
  MethodAttribute<?,?> idAttribute=viewType.getIdAttribute();
  List<DirtyAttributeFlusher<? extends Object,? extends Object>> flushers=new ArrayList<DirtyAttributeFlusher<? extends Object,? extends Object>>(attributes.size());
  StringBuilder sb=new StringBuilder(100);
  sb.append("String_Node_Str" + entityClass.getName() + "String_Node_Str");
  boolean first=true;
  boolean supportsQueryFlush=true;
  for (  MethodAttribute<?,?> attribute : attributes) {
    if (attribute == idAttribute) {
      continue;
    }
    if (attribute.isUpdatable()) {
      if (first) {
        first=false;
      }
 else {
        sb.append("String_Node_Str");
      }
      String attributeName=attribute.getName();
      String attributeMapping=((MappingAttribute<?,?>)viewType.getAttribute(attributeName)).getMapping();
      DirtyAttributeFlusher<? extends Object,? extends Object> flusher;
      if (attribute.isCollection()) {
        if (attribute instanceof MapAttribute<?,?,?>) {
          flusher=new MapAttributeFlusher<Object,RecordingMap<Map<?,?>,?,?>>((PropertyPathExpression<Object,? extends Map<?,?>>)ExpressionUtils.getExpression(entityClass,attributeMapping));
        }
 else {
          flusher=new CollectionAttributeFlusher<Object,RecordingCollection<Collection<?>,?>>((PropertyPathExpression<Object,? extends Collection<?>>)ExpressionUtils.getExpression(entityClass,attributeMapping));
        }
      }
 else {
        flusher=new BasicAttributeFlusher<Object,Object>(attributeName,(PropertyPathExpression<Object,Object>)ExpressionUtils.getExpression(entityClass,attributeMapping));
      }
      supportsQueryFlush=supportsQueryFlush && flusher.supportsQueryFlush();
      flushers.add(flusher);
      sb.append(attributeMapping);
      sb.append("String_Node_Str");
      sb.append(attributeName);
    }
  }
  dirtyAttributeFlushers=flushers.toArray(new DirtyAttributeFlusher[flushers.size()]);
  String idName=idAttribute.getName();
  sb.append("String_Node_Str").append(((MappingAttribute<?,?>)viewType.getAttribute(idName)).getMapping()).append("String_Node_Str").append(idName);
  idAttributeName=idName;
  useQueryFlush=supportsQueryFlush;
  updateQuery=sb.toString();
}

Fixed version (ground truth):
@SuppressWarnings({"String_Node_Str","String_Node_Str"}) public FullEntityViewUpdater(ViewType<?> viewType){
  this.entityClass=viewType.getEntityClass();
  Set<MethodAttribute<?,?>> attributes=(Set<MethodAttribute<?,?>>)(Set)viewType.getAttributes();
  MethodAttribute<?,?> idAttribute=viewType.getIdAttribute();
  List<DirtyAttributeFlusher<? extends Object,? extends Object>> flushers=new ArrayList<DirtyAttributeFlusher<? extends Object,? extends Object>>(attributes.size());
  StringBuilder sb=new StringBuilder(100);
  sb.append("String_Node_Str" + entityClass.getName() + "String_Node_Str");
  boolean first=true;
  boolean supportsQueryFlush=true;
  for (  MethodAttribute<?,?> attribute : attributes) {
    if (attribute == idAttribute) {
      continue;
    }
    if (attribute.isUpdatable()) {
      if (first) {
        first=false;
      }
 else {
        sb.append("String_Node_Str");
      }
      String attributeName=attribute.getName();
      String attributeMapping=((MappingAttribute<?,?>)viewType.getAttribute(attributeName)).getMapping();
      DirtyAttributeFlusher<? extends Object,? extends Object> flusher;
      if (attribute.isCollection()) {
        if (attribute instanceof MapAttribute<?,?,?>) {
          flusher=new MapAttributeFlusher<Object,RecordingMap<Map<?,?>,?,?>>((PropertyPathExpression<Object,Map<?,?>>)(PropertyPathExpression)ExpressionUtils.getExpression(entityClass,attributeMapping));
        }
 else {
          flusher=new CollectionAttributeFlusher<Object,RecordingCollection<Collection<?>,?>>((PropertyPathExpression<Object,Collection<?>>)(PropertyPathExpression)ExpressionUtils.getExpression(entityClass,attributeMapping));
        }
      }
 else {
        flusher=new BasicAttributeFlusher<Object,Object>(attributeName,(PropertyPathExpression<Object,Object>)ExpressionUtils.getExpression(entityClass,attributeMapping));
      }
      supportsQueryFlush=supportsQueryFlush && flusher.supportsQueryFlush();
      flushers.add(flusher);
      sb.append(attributeMapping);
      sb.append("String_Node_Str");
      sb.append(attributeName);
    }
  }
  dirtyAttributeFlushers=flushers.toArray(new DirtyAttributeFlusher[flushers.size()]);
  String idName=idAttribute.getName();
  sb.append("String_Node_Str").append(((MappingAttribute<?,?>)viewType.getAttribute(idName)).getMapping()).append("String_Node_Str").append(idName);
  idAttributeName=idName;
  useQueryFlush=supportsQueryFlush;
  updateQuery=sb.toString();
}