Source:
<code>private Node deserializeObject(JsonObject nodeJson) { try { String serializedNodeType = nodeJson.getString("!"); BaseNodeMetaModel nodeMetaModel = getNodeMetaModel(Class.forName(serializedNodeType)) .orElseThrow(() -> new IllegalStateException("Trying to deserialize an unknown node type: " + serializedNodeType)); Map<String, Object> parameters = new HashMap<>(); for (String name : nodeJson.keySet()) { <START> if (name.equals("!")) { <END> continue; } PropertyMetaModel propertyMetaModel = nodeMetaModel.getAllPropertyMetaModels().stream() .filter(mm -> mm.getName().equals(name)) .findFirst().orElseThrow(() -> new IllegalStateException("Unknown property: " + nodeMetaModel.getQualifiedClassName() + "." + name)); if (propertyMetaModel.isNodeList()) { JsonArray nodeListJson = nodeJson.getJsonArray(name); parameters.put(name, deserializeNodeList(nodeListJson)); } else if (propertyMetaModel.isEnumSet()) { JsonArray enumSetJson = nodeJson.getJsonArray(name); parameters.put(name, deserializeEnumSet(enumSetJson)); } else if (propertyMetaModel.isNode()) { parameters.put(name, deserializeObject(nodeJson.getJsonObject(name))); } else { Class<?> type = propertyMetaModel.getType(); if (type == String.class) { parameters.put(name, nodeJson.getString(name)); } else if (type == boolean.class) { parameters.put(name, Boolean.parseBoolean(nodeJson.getString(name))); } else { throw new IllegalStateException("Don't know how to convert: " + type); } } } return nodeMetaModel.construct(parameters); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } }</code><technical_language>this special name mean? Do need a constant for that</technical_language>

Target:
private Node deserializeObject(JsonObject nodeJson) { try { String serializedNodeType = nodeJson.getString(SERIALIZED_CLASS_KEY); BaseNodeMetaModel nodeMetaModel = getNodeMetaModel(Class.forName(serializedNodeType)) .orElseThrow(() -> new IllegalStateException("Trying to deserialize an unknown node type: " + serializedNodeType)); Map<String, Object> parameters = new HashMap<>(); for (String name : nodeJson.keySet()) { if (name.equals(SERIALIZED_CLASS_KEY)) { continue; } PropertyMetaModel propertyMetaModel = nodeMetaModel.getAllPropertyMetaModels().stream() .filter(mm -> mm.getName().equals(name)) .findFirst().orElseThrow(() -> new IllegalStateException("Unknown property: " + nodeMetaModel.getQualifiedClassName() + "." + name)); if (propertyMetaModel.isNodeList()) { JsonArray nodeListJson = nodeJson.getJsonArray(name); parameters.put(name, deserializeNodeList(nodeListJson)); } else if (propertyMetaModel.isEnumSet()) { JsonArray enumSetJson = nodeJson.getJsonArray(name); parameters.put(name, deserializeEnumSet(enumSetJson)); } else if (propertyMetaModel.isNode()) { parameters.put(name, deserializeObject(nodeJson.getJsonObject(name))); } else { Class<?> type = propertyMetaModel.getType(); if (type == String.class) { parameters.put(name, nodeJson.getString(name)); } else if (type == boolean.class) { parameters.put(name, Boolean.parseBoolean(nodeJson.getString(name))); } else { throw new IllegalStateException("Don't know how to convert: " + type); } } } return nodeMetaModel.construct(parameters); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } }