Program: 176007
Project: 176007
Buggy source:
/** 
 * Populates collection field(s) into entity
 * @param entity
 * @param thriftColumnValue
 * @param attribute
 */
private void setCollectionValue(Object entity,Object thriftColumnValue,Attribute attribute){
  try {
    if (Collection.class.isAssignableFrom(((Field)attribute.getJavaMember()).getType())) {
      Collection outputCollection=null;
      ByteBuffer valueByteBuffer=ByteBuffer.wrap((byte[])thriftColumnValue);
      Class<?> genericClass=PropertyAccessorHelper.getGenericClass((Field)attribute.getJavaMember());
      Class<?> valueValidationClass=CassandraValidationClassMapper.getValidationClassInstance(genericClass,true);
      Object valueClassInstance=valueValidationClass.getDeclaredField("String_Node_Str").get(null);
      if (((Field)attribute.getJavaMember()).getType().isAssignableFrom(List.class)) {
        ListType listType=ListType.getInstance((AbstractType)valueClassInstance);
        outputCollection=new ArrayList();
        outputCollection.addAll(listType.compose(valueByteBuffer));
      }
 else       if (((Field)attribute.getJavaMember()).getType().isAssignableFrom(Set.class)) {
        SetType setType=SetType.getInstance((AbstractType)valueClassInstance);
        outputCollection=new HashSet();
        outputCollection.addAll(setType.compose(valueByteBuffer));
      }
      PropertyAccessorHelper.set(entity,(Field)attribute.getJavaMember(),marshalCollection(valueValidationClass,outputCollection,genericClass));
    }
 else     if (((Field)attribute.getJavaMember()).getType().isAssignableFrom(Map.class)) {
      ByteBuffer valueByteBuffer=ByteBuffer.wrap((byte[])thriftColumnValue);
      List<Class<?>> mapGenericClasses=PropertyAccessorHelper.getGenericClasses((Field)attribute.getJavaMember());
      Class keyClass=CassandraValidationClassMapper.getValidationClassInstance(mapGenericClasses.get(0),true);
      Class valueClass=CassandraValidationClassMapper.getValidationClassInstance(mapGenericClasses.get(1),true);
      Object keyClassInstance=keyClass.getDeclaredField("String_Node_Str").get(null);
      Object valueClassInstance=valueClass.getDeclaredField("String_Node_Str").get(null);
      MapType mapType=MapType.getInstance((AbstractType)keyClassInstance,(AbstractType)valueClassInstance);
      Map rawMap=new HashMap();
      rawMap.putAll(mapType.compose(valueByteBuffer));
      Map dataCollection=marshalMap(mapGenericClasses,keyClass,valueClass,rawMap);
      PropertyAccessorHelper.set(entity,(Field)attribute.getJavaMember(),dataCollection.isEmpty() ? rawMap : dataCollection);
    }
  }
 catch (  Exception e) {
    log.error("String_Node_Str",attribute.getName(),e);
    throw new PersistenceException(e);
  }
}

Fixed version (ground truth):
/** 
 * Populates collection field(s) into entity
 * @param entity
 * @param thriftColumnValue
 * @param attribute
 */
private void setCollectionValue(Object entity,Object thriftColumnValue,Attribute attribute){
  try {
    if (Collection.class.isAssignableFrom(((Field)attribute.getJavaMember()).getType())) {
      Collection outputCollection=null;
      ByteBuffer valueByteBuffer=ByteBuffer.wrap((byte[])thriftColumnValue);
      Class<?> genericClass=PropertyAccessorHelper.getGenericClass((Field)attribute.getJavaMember());
      Class<?> valueValidationClass=CassandraValidationClassMapper.getValidationClassInstance(genericClass,true);
      Object valueClassInstance=valueValidationClass.getDeclaredField("String_Node_Str").get(null);
      if (((Field)attribute.getJavaMember()).getType().isAssignableFrom(List.class)) {
        ListType listType=ListType.getInstance((AbstractType)valueClassInstance);
        outputCollection=new ArrayList();
        outputCollection.addAll((Collection)listType.compose(valueByteBuffer));
      }
 else       if (((Field)attribute.getJavaMember()).getType().isAssignableFrom(Set.class)) {
        SetType setType=SetType.getInstance((AbstractType)valueClassInstance);
        outputCollection=new HashSet();
        outputCollection.addAll((Collection)setType.compose(valueByteBuffer));
      }
      PropertyAccessorHelper.set(entity,(Field)attribute.getJavaMember(),marshalCollection(valueValidationClass,outputCollection,genericClass));
    }
 else     if (((Field)attribute.getJavaMember()).getType().isAssignableFrom(Map.class)) {
      ByteBuffer valueByteBuffer=ByteBuffer.wrap((byte[])thriftColumnValue);
      List<Class<?>> mapGenericClasses=PropertyAccessorHelper.getGenericClasses((Field)attribute.getJavaMember());
      Class keyClass=CassandraValidationClassMapper.getValidationClassInstance(mapGenericClasses.get(0),true);
      Class valueClass=CassandraValidationClassMapper.getValidationClassInstance(mapGenericClasses.get(1),true);
      Object keyClassInstance=keyClass.getDeclaredField("String_Node_Str").get(null);
      Object valueClassInstance=valueClass.getDeclaredField("String_Node_Str").get(null);
      MapType mapType=MapType.getInstance((AbstractType)keyClassInstance,(AbstractType)valueClassInstance);
      Map rawMap=new HashMap();
      rawMap.putAll((Map)mapType.compose(valueByteBuffer));
      Map dataCollection=marshalMap(mapGenericClasses,keyClass,valueClass,rawMap);
      PropertyAccessorHelper.set(entity,(Field)attribute.getJavaMember(),dataCollection.isEmpty() ? rawMap : dataCollection);
    }
  }
 catch (  Exception e) {
    log.error("String_Node_Str",attribute.getName(),e);
    throw new PersistenceException(e);
  }
}