protected T doDemarshall(final T impl, final EJValue o, final MarshallingSession ctx) {
final EJObject jsonObject = o.isObject();
Object demarshalledKey, demarshalledValue;
for (final String key : jsonObject.keySet()) {
if (key.startsWith(SerializationParts.EMBEDDED_JSON)) {
final EJValue val = ParserFactory.get().parse(key.substring(SerializationParts.EMBEDDED_JSON.length()));
demarshalledKey = ctx.getMarshallerInstance(ctx.determineTypeFor(null, val)).demarshall(val, ctx);
}
else {