Program: 162988
Project: 162988
Buggy source:
@Override public Object unmarshal(HierarchicalStreamReader reader,UnmarshallingContext unmarshallingContext){
  final String nodeName=reader.getNodeName();
switch (nodeName) {
case "String_Node_Str":
    while (reader.hasMoreChildren()) {
      reader.moveDown();
      final String nodeName0=reader.getNodeName();
      if (!nodeName0.equals("String_Node_Str"))       throw new ConversionException("String_Node_Str" + "String_Node_Str" + nodeName0);
      K k=null;
      V v=null;
      while (reader.hasMoreChildren()) {
        reader.moveDown();
        final String nodeName1=reader.getNodeName();
        if ("String_Node_Str".equals(nodeName1))         k=get(reader,unmarshallingContext,kClass);
 else         if ("String_Node_Str".equals(nodeName1))         v=get(reader,unmarshallingContext,vClass);
 else         throw new ConversionException("String_Node_Str");
        reader.moveUp();
      }
      if (k != null)       VanillaChronicleMap.this.put(k,v);
      reader.moveUp();
    }
  break;
case "String_Node_Str":
if (kClass.getCanonicalName().startsWith("String_Node_Str")) {
  return toNative(reader,vClass);
}
 else {
  long keySize=keySizeMarshaller.readSize(buffer);
  ThreadLocalCopies copies=keyReaderProvider.getCopies(null);
  BytesReader<K> keyReader=keyReaderProvider.get(copies,originalKeyReader);
  return keyReader.read(buffer,keySize);
}
case "String_Node_Str":
if (vClass.getCanonicalName().startsWith("String_Node_Str")) {
return toNative(reader,vClass);
}
 else {
long valueSize=valueSizeMarshaller.readSize(buffer);
ThreadLocalCopies copies=valueReaderProvider.getCopies(null);
BytesReader<V> valueReader=valueReaderProvider.get(copies,originalValueReader);
return valueReader.read(buffer,valueSize);
}
}
return null;
}

Fixed version (ground truth):
@Override public Object unmarshal(HierarchicalStreamReader reader,UnmarshallingContext unmarshallingContext){
  final String nodeName=reader.getNodeName();
switch (nodeName) {
case "String_Node_Str":
    while (reader.hasMoreChildren()) {
      reader.moveDown();
      final String nodeName0=reader.getNodeName();
      if (!nodeName0.equals("String_Node_Str"))       throw new ConversionException("String_Node_Str" + "String_Node_Str" + nodeName0);
      K k=null;
      V v=null;
      while (reader.hasMoreChildren()) {
        reader.moveDown();
        final String nodeName1=reader.getNodeName();
        if ("String_Node_Str".equals(nodeName1))         k=get(reader,unmarshallingContext,kClass);
 else         if ("String_Node_Str".equals(nodeName1))         v=get(reader,unmarshallingContext,vClass);
 else         throw new ConversionException("String_Node_Str");
        reader.moveUp();
      }
      if (k != null)       VanillaChronicleMap.this.put(k,v);
      reader.moveUp();
    }
  break;
case "String_Node_Str":
if (kClass.getCanonicalName().startsWith("String_Node_Str")) {
  return to$$Native(reader,vClass);
}
 else {
  long keySize=keySizeMarshaller.readSize(buffer);
  ThreadLocalCopies copies=keyReaderProvider.getCopies(null);
  BytesReader<K> keyReader=keyReaderProvider.get(copies,originalKeyReader);
  return keyReader.read(buffer,keySize);
}
case "String_Node_Str":
if (vClass.getCanonicalName().startsWith("String_Node_Str")) {
return to$$Native(reader,vClass);
}
 else {
long valueSize=valueSizeMarshaller.readSize(buffer);
ThreadLocalCopies copies=valueReaderProvider.getCopies(null);
BytesReader<V> valueReader=valueReaderProvider.get(copies,originalValueReader);
return valueReader.read(buffer,valueSize);
}
}
return null;
}