in src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java [62:96]
public Object cloneData(final Object data) {
if (data != null) {
if (data instanceof String || data instanceof Number || data instanceof Boolean) {
return data;
}
if (data instanceof Node) {
return ((Node)data).cloneNode(true);
}
if (data instanceof NodeList) {
final NodeList nodeList = (NodeList)data;
final ArrayList<Node> list = new ArrayList<>();
for (int i = 0, size = nodeList.getLength(); i < size; i++) {
list.add(nodeList.item(i).cloneNode(true));
}
return list;
}
if (data instanceof List) {
final ArrayList<Object> list = new ArrayList<>();
for (final Object v : (List)data) {
list.add(cloneData(v));
}
return list;
}
if (!(data instanceof Map)) {
return cloneUnknownDataType(data);
}
final Map<?,?> dataMap = (Map<?,?>)data;
final HashMap<Object, Object> map = new LinkedHashMap<>();
for (final Map.Entry<?,?> entry : dataMap.entrySet()) {
map.put(cloneData(entry.getKey()), cloneData(entry.getValue()));
}
return map;
}
return null;
}