Buggy code:
public class MapDeserializer implements ObjectDeserializer { public static final MapDeserializer instance = new MapDeserializer ( ) ; @ SuppressWarnings ( "unchecked" ) public < T > T deserialze ( DefaultJSONParser parser , Type type , Object fieldName ) { } @ SuppressWarnings ( { "rawtypes" , "unchecked" } ) protected Object deserialze ( DefaultJSONParser parser , Type type , Object fieldName , Map map ) { } @ SuppressWarnings ( "rawtypes" ) public static Map parseMap ( DefaultJSONParser parser , Map < String , Object > map , Type valueType , Object fieldName ) { JSONLexer lexer = parser . getLexer ( ) ; if ( ( lexer . token ( ) ) != ( JSONToken . LBRACE ) ) { throw new JSONException ( ( "syntax<seq2seq4repair_space>error,<seq2seq4repair_space>expect<seq2seq4repair_space>{,<seq2seq4repair_space>actual<seq2seq4repair_space>" + ( lexer . token ( ) ) ) ) ; } ParseContext context = parser . getContext ( ) ; try { for ( ; ; ) { lexer . skipWhitespace ( ) ; char ch = lexer . getCurrent ( ) ; if ( parser . isEnabled ( AllowArbitraryCommas ) ) { while ( ch == ',' ) { lexer . next ( ) ; lexer . skipWhitespace ( ) ; ch = lexer . getCurrent ( ) ; } } String key ; if ( ch == '"' ) { key = lexer . scanSymbol ( parser . getSymbolTable ( ) , '"' ) ; lexer . skipWhitespace ( ) ; ch = lexer . getCurrent ( ) ; if ( ch != ':' ) { throw new JSONException ( ( "expect<seq2seq4repair_space>':'<seq2seq4repair_space>at<seq2seq4repair_space>" + ( lexer . pos ( ) ) ) ) ; } } else if ( ch == '}' ) { lexer . next ( ) ; lexer . resetStringPosition ( ) ; lexer . nextToken ( COMMA ) ; return map ; } else if ( ch == '\'' ) { if ( ! ( parser . isEnabled ( AllowSingleQuotes ) ) ) { throw new JSONException ( "syntax<seq2seq4repair_space>error" ) ; } key = lexer . scanSymbol ( parser . getSymbolTable ( ) , '\'' ) ; lexer . skipWhitespace ( ) ; ch = lexer . getCurrent ( ) ; if ( ch != ':' ) { throw new JSONException ( ( "expect<seq2seq4repair_space>':'<seq2seq4repair_space>at<seq2seq4repair_space>" + ( lexer . pos ( ) ) ) ) ; } } else { if ( ! ( parser . isEnabled ( AllowUnQuotedFieldNames ) ) ) { throw new JSONException ( "syntax<seq2seq4repair_space>error" ) ; } key = lexer . scanSymbolUnQuoted ( parser . getSymbolTable ( ) ) ; lexer . skipWhitespace ( ) ; ch = lexer . getCurrent ( ) ; if ( ch != ':' ) { throw new JSONException ( ( ( ( "expect<seq2seq4repair_space>':'<seq2seq4repair_space>at<seq2seq4repair_space>" + ( lexer . pos ( ) ) ) + ",<seq2seq4repair_space>actual<seq2seq4repair_space>" ) + ch ) ) ; } } lexer . next ( ) ; lexer . skipWhitespace ( ) ; ch = lexer . getCurrent ( ) ; lexer . resetStringPosition ( ) ; if ( key == ( JSON . DEFAULT_TYPE_KEY ) ) { String typeName = lexer . scanSymbol ( parser . getSymbolTable ( ) , '"' ) ; Class < ? > clazz = TypeUtils . loadClass ( typeName ) ; <START_BUG> if ( clazz == ( map . getClass ( ) ) ) { <END_BUG> lexer . nextToken ( COMMA ) ; if ( ( lexer . token ( ) ) == ( JSONToken . RBRACE ) ) { lexer . nextToken ( COMMA ) ; return map ; } continue ; } ObjectDeserializer deserializer = parser . getConfig ( ) . getDeserializer ( clazz ) ; lexer . nextToken ( COMMA ) ; parser . setResolveStatus ( TypeNameRedirect ) ; if ( ( context != null ) && ( ! ( fieldName instanceof Integer ) ) ) { parser . popContext ( ) ; } return ( ( Map ) ( deserializer . deserialze ( parser , clazz , fieldName ) ) ) ; } Object value ; lexer . nextToken ( ) ; if ( ( lexer . token ( ) ) == ( JSONToken . NULL ) ) { value = null ; lexer . nextToken ( ) ; } else { value = parser . parseObject ( valueType ) ; } map . put ( key , value ) ; parser . checkMapResolve ( map , key ) ; parser . setContext ( context , value , key ) ; final int tok = lexer . token ( ) ; if ( ( tok == ( JSONToken . EOF ) ) || ( tok == ( JSONToken . RBRACKET ) ) ) { return map ; } if ( tok == ( JSONToken . RBRACE ) ) { lexer . nextToken ( ) ; return map ; } } } finally { parser . setContext ( context ) ; } } public static Object parseMap ( DefaultJSONParser parser , Map < Object , Object > map , Type keyType , Type valueType , Object fieldName ) { } @ SuppressWarnings ( { "unchecked" , "rawtypes" } ) protected Map < Object , Object > createMap ( Type type ) { } public int getFastMatchToken ( ) { } }

Fix:
if ( Map . class . isAssignableFrom ( clazz ) ) {