} else if (v.isFloatValue()) {
o = v.asFloatValue().getDouble();
} else if (v.isIntegerValue()) {
o = v.asIntegerValue().getLong();
} else if (v.isArrayValue()) {
final ArrayValue src = v.asArrayValue();
final ArrayList<Object> dst = new ArrayList<Object>(src.size());
for (int i = 0; i < src.size(); i++) {
final Object val = deserializeObject(src.get(i));
dst.add(i, val);
}
o = dst;
} else if (v.isMapValue()) {
final MapValue src = v.asMapValue();
final HashMap<Object, Object> dst = new HashMap<Object, Object>(src.size());
for (Map.Entry<Value, Value> entry : src.entrySet()) {
final Object key = deserializeObject(entry.getKey());
final Object val = deserializeObject(entry.getValue());
dst.put(key, val);
}
o = dst;