Buggy code:
public final class Rpc { private static final String TAG = "Rpc" ; public static < T > void invokeAsync ( final AndroidExecutionContext rpcContext , final T rpcObject , final OnResponse < T > onResponse ) { final Context context = rpcContext . androidApplicationContext ( ) ; HttpRequest request = null ; try { request = RequestFactory . createRequest ( rpcContext , rpcObject ) ; } catch ( SerializationException e ) { onResponse . onFailure ( e ) ; return ; } catch ( ContextException e ) { onResponse . onFailure ( e . why ( ) ) ; return ; } if ( request == null ) { Logger . error ( Rpc . TAG , "Could<seq2seq4repair_space>not<seq2seq4repair_space>make<seq2seq4repair_space>call<seq2seq4repair_space>due<seq2seq4repair_space>to<seq2seq4repair_space>error(s)<seq2seq4repair_space>while<seq2seq4repair_space>creating<seq2seq4repair_space>request<seq2seq4repair_space>object." ) ; return ; } final RpcObject rpcObjectDecl = rpcObject . getClass ( ) . getAnnotation ( RpcObject . class ) ; final FieldNameTranslator nameTranslator = request . getFieldNameTranslator ( ) ; Response . Listener < ResponseDelegate > onVolleyResponse = new Response . Listener < ResponseDelegate > ( ) { @ Override public void onResponse ( ResponseDelegate s ) { try { String contentType = rpcObjectDecl . expectedContentType ( ) ; if ( ( contentType == null ) || ( ( contentType . length ( ) ) == 0 ) ) contentType = s . contentType ( ) ; <START_BUG> ObjectBuilder . deserialize ( rpcContext , contentType , s . data ( ) , rpcObject , nameTranslator ) ; <END_BUG> if ( ( rpcContext . getResponseValidator ( ) ) != null ) { try { rpcContext . getResponseValidator ( ) . validate ( rpcObject ) ; } catch ( e ) { if ( ! ( rpcContext . dispatchErrorHandler ( context , e ) ) ) { onResponse . onFailure ( e ) ; return ; } } } onResponse . onResponse ( rpcObject ) ; } catch ( e ) { if ( ! ( rpcContext . dispatchErrorHandler ( context , e ) ) ) onResponse . onFailure ( e ) ; } } } ; Response . ErrorListener onVolleyErrorResponse = new Response . ErrorListener ( ) { @ Override public void onErrorResponse ( VolleyError volleyError ) { Logger . error ( Rpc . TAG , ( "Error<seq2seq4repair_space>while<seq2seq4repair_space>RPC<seq2seq4repair_space>call:<seq2seq4repair_space>" + ( volleyError . getMessage ( ) ) ) ) ; if ( Config . DEBUG_DUMP_RESPONSE ) { try { if ( ( volleyError . networkResponse ) != null ) Logger . error ( Rpc . TAG , ( "Error<seq2seq4repair_space>response:<seq2seq4repair_space>" + ( new String ( volleyError . networkResponse . data , "utf-8" ) ) ) ) ; } catch ( UnsupportedEncodingException e ) { } } Throwable e = volleyError . getCause ( ) ; if ( e == null ) { if ( volleyError instanceof ServerError ) { e = new RpcException ( "Server<seq2seq4repair_space>Error" ) ; } else { e = new RpcException ( volleyError . toString ( ) ) ; } } if ( ( ! ( rpcContext . dispatchErrorHandler ( context , volleyError ) ) ) && ( ! ( rpcContext . dispatchErrorHandler ( context , e ) ) ) ) onResponse . onFailure ( volleyError ) ; } } ; VolleyRequest req = new VolleyRequest ( request , onVolleyResponse , onVolleyErrorResponse ) ; rpcContext . requestQueue ( ) . add ( req ) ; } public static < T > Observable < T > invokeObservable ( final AndroidExecutionContext rpcContext , final T rpcObject ) { } }

Fix:
ObjectBuilder . build ( rpcContext , contentType , s . data ( ) , rpcObject , nameTranslator ) ;