Program: 85263
Project: 85263
Buggy source:
private EncodedValue makeConstantItem(SootField sf,Tag t){
  if (!(t instanceof ConstantValueTag))   throw new RuntimeException("String_Node_Str");
  if (t instanceof IntegerConstantValueTag) {
    Type sft=sf.getType();
    IntegerConstantValueTag i=(IntegerConstantValueTag)t;
    if (sft instanceof BooleanType) {
      int v=i.getIntValue();
      if (v == 0) {
        return ImmutableBooleanEncodedValue.FALSE_VALUE;
      }
 else       if (v == 1) {
        return ImmutableBooleanEncodedValue.TRUE_VALUE;
      }
 else {
        throw new RuntimeException("String_Node_Str");
      }
    }
 else     if (sft instanceof CharType) {
      return new ImmutableCharEncodedValue((char)i.getIntValue());
    }
 else     if (sft instanceof ByteType) {
      return new ImmutableByteEncodedValue((byte)i.getIntValue());
    }
 else     if (sft instanceof IntType) {
      return new ImmutableIntEncodedValue(i.getIntValue());
    }
 else     if (sft instanceof ShortType) {
      return new ImmutableShortEncodedValue((short)i.getIntValue());
    }
 else {
      throw new RuntimeException("String_Node_Str" + t + "String_Node_Str"+ sf);
    }
  }
 else   if (t instanceof LongConstantValueTag) {
    LongConstantValueTag l=(LongConstantValueTag)t;
    return new ImmutableLongEncodedValue(l.getLongValue());
  }
 else   if (t instanceof DoubleConstantValueTag) {
    DoubleConstantValueTag d=(DoubleConstantValueTag)t;
    return new ImmutableDoubleEncodedValue(d.getDoubleValue());
  }
 else   if (t instanceof FloatConstantValueTag) {
    FloatConstantValueTag f=(FloatConstantValueTag)t;
    return new ImmutableFloatEncodedValue(f.getFloatValue());
  }
 else   if (t instanceof StringConstantValueTag) {
    StringConstantValueTag s=(StringConstantValueTag)t;
    return new ImmutableStringEncodedValue(s.getStringValue());
  }
 else   throw new RuntimeException("String_Node_Str");
}

Fixed version (ground truth):
private EncodedValue makeConstantItem(SootField sf,Tag t){
  if (!(t instanceof ConstantValueTag))   throw new RuntimeException("String_Node_Str");
  if (t instanceof IntegerConstantValueTag) {
    Type sft=sf.getType();
    IntegerConstantValueTag i=(IntegerConstantValueTag)t;
    if (sft instanceof BooleanType) {
      int v=i.getIntValue();
      if (v == 0) {
        return ImmutableBooleanEncodedValue.FALSE_VALUE;
      }
 else       if (v == 1) {
        return ImmutableBooleanEncodedValue.TRUE_VALUE;
      }
 else {
        throw new RuntimeException("String_Node_Str");
      }
    }
 else     if (sft instanceof CharType) {
      return new ImmutableCharEncodedValue((char)i.getIntValue());
    }
 else     if (sft instanceof ByteType) {
      return new ImmutableByteEncodedValue((byte)i.getIntValue());
    }
 else     if (sft instanceof IntType) {
      return new ImmutableIntEncodedValue(i.getIntValue());
    }
 else     if (sft instanceof ShortType) {
      return new ImmutableShortEncodedValue((short)i.getIntValue());
    }
 else {
      throw new RuntimeException("String_Node_Str" + t + "String_Node_Str"+ sf);
    }
  }
 else   if (t instanceof LongConstantValueTag) {
    LongConstantValueTag l=(LongConstantValueTag)t;
    return new ImmutableLongEncodedValue(l.getLongValue());
  }
 else   if (t instanceof DoubleConstantValueTag) {
    DoubleConstantValueTag d=(DoubleConstantValueTag)t;
    return new ImmutableDoubleEncodedValue(d.getDoubleValue());
  }
 else   if (t instanceof FloatConstantValueTag) {
    FloatConstantValueTag f=(FloatConstantValueTag)t;
    return new ImmutableFloatEncodedValue(f.getFloatValue());
  }
 else   if (t instanceof StringConstantValueTag) {
    StringConstantValueTag s=(StringConstantValueTag)t;
    if (sf.getType().equals(RefType.v("String_Node_Str")))     return new ImmutableStringEncodedValue(s.getStringValue());
 else     return null;
  }
 else   throw new RuntimeException("String_Node_Str");
}