@SuppressWarnings({"unchecked"}) public static Map<String, Object> decodePayload(final Object value) { if (value == null) { return null; } if (!(value instanceof JSONObject)) { throw new RuntimeException("bad payload: " + value); } if (autoDemarshall) { return ErraiProtocol.decodePayload(GWTJSON.wrap((JSONObject) value)); } else { nativeLog("using no-auto envelope demarshaller"); return ErraiProtocolEnvelopeNoAutoMarshaller.INSTANCE.demarshall( GWTJSON.wrap((JSONObject) value), MarshallingSessionProviderFactory.getEncoding()); } }