public Tag tag(ObjectNode node, String location, ParseResult result) {
Tag tag = null;
if(node != null) {
tag = new Tag();
Set<String> keys = getKeys(node);
String value = getString("name", node, true, location, result);
tag.name(value);
value = getString("description", node, false, location, result);
tag.description(value);
ObjectNode externalDocs = getObject("externalDocs", node, false, location, result);
ExternalDocs docs = externalDocs(externalDocs, location + "externalDocs", result);
tag.externalDocs(docs);
for(String key : keys) {
if(key.startsWith("x-")) {
tag.setVendorExtension(key, extension(node.get(key)));
}
else if(!TAG_KEYS.contains(key)) {
result.extra(location + ".externalDocs", key, node.get(key));
}
}
}
return tag;
}