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