Program: 160341
Project: 160341
Buggy source:
private Object readPrimitive(JsonReader jsonReader,EStructuralFeature eStructuralFeature) throws IOException {
  EClassifier eClassifier=eStructuralFeature.getEType();
  if (eClassifier == EcorePackage.eINSTANCE.getEString()) {
    return jsonReader.nextString();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEDouble()) {
    return jsonReader.nextDouble();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEBoolean()) {
    return jsonReader.nextBoolean();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEInt()) {
    return jsonReader.nextInt();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEIntegerObject()) {
    return jsonReader.nextInt();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEByteArray()) {
    return Base64.decodeBase64(jsonReader.nextString());
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEDate()) {
    long timestamp=jsonReader.nextLong();
    return new Date(timestamp);
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEFloat()) {
    return (float)jsonReader.nextDouble();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEEnum()) {
    EEnum eEnum=(EEnum)eStructuralFeature.getEType();
    return eEnum.getEEnumLiteral(jsonReader.nextString()).getInstance();
  }
 else   if (eClassifier instanceof EClass) {
    if (eStructuralFeature.getEType().getName().equals("String_Node_Str")) {
      IfcGloballyUniqueId ifcGloballyUniqueId=Ifc2x3tc1Factory.eINSTANCE.createIfcGloballyUniqueId();
      ifcGloballyUniqueId.setWrappedValue(jsonReader.nextString());
      return ifcGloballyUniqueId;
    }
 else {
      throw new RuntimeException();
    }
  }
 else   if (eClassifier instanceof EEnum) {
    EEnum eEnum=(EEnum)eStructuralFeature.getEType();
    if (jsonReader.peek() == JsonToken.BOOLEAN) {
      return eEnum.getEEnumLiteral(jsonReader.nextBoolean() ? "String_Node_Str" : "String_Node_Str").getInstance();
    }
 else {
      return eEnum.getEEnumLiteral(jsonReader.nextString()).getInstance();
    }
  }
 else {
    throw new RuntimeException("String_Node_Str" + eStructuralFeature.getEType().getName());
  }
}

Fixed version (ground truth):
private Object readPrimitive(JsonReader jsonReader,EStructuralFeature eStructuralFeature) throws IOException {
  EClassifier eClassifier=eStructuralFeature.getEType();
  if (eClassifier == EcorePackage.eINSTANCE.getEString()) {
    return jsonReader.nextString();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEDouble()) {
    return jsonReader.nextDouble();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEBoolean()) {
    return jsonReader.nextBoolean();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEInt()) {
    return jsonReader.nextInt();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getELong()) {
    return jsonReader.nextLong();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEIntegerObject()) {
    return jsonReader.nextInt();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEByteArray()) {
    return Base64.decodeBase64(jsonReader.nextString());
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEDate()) {
    long timestamp=jsonReader.nextLong();
    return new Date(timestamp);
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEFloat()) {
    return (float)jsonReader.nextDouble();
  }
 else   if (eClassifier == EcorePackage.eINSTANCE.getEEnum()) {
    EEnum eEnum=(EEnum)eStructuralFeature.getEType();
    return eEnum.getEEnumLiteral(jsonReader.nextString()).getInstance();
  }
 else   if (eClassifier instanceof EClass) {
    if (eStructuralFeature.getEType().getName().equals("String_Node_Str")) {
      IfcGloballyUniqueId ifcGloballyUniqueId=Ifc2x3tc1Factory.eINSTANCE.createIfcGloballyUniqueId();
      ifcGloballyUniqueId.setWrappedValue(jsonReader.nextString());
      return ifcGloballyUniqueId;
    }
 else {
      throw new RuntimeException();
    }
  }
 else   if (eClassifier instanceof EEnum) {
    EEnum eEnum=(EEnum)eStructuralFeature.getEType();
    if (jsonReader.peek() == JsonToken.BOOLEAN) {
      return eEnum.getEEnumLiteral(jsonReader.nextBoolean() ? "String_Node_Str" : "String_Node_Str").getInstance();
    }
 else {
      return eEnum.getEEnumLiteral(jsonReader.nextString()).getInstance();
    }
  }
 else {
    throw new RuntimeException("String_Node_Str" + eStructuralFeature.getEType().getName());
  }
}