Protocol newP = new Protocol(p.getName(), p.getDoc(), p.getNamespace());
Map<Schema,Schema> types = new LinkedHashMap<Schema,Schema>();
// Copy properties
for (Map.Entry<String,JsonNode> prop : p.getJsonProps().entrySet())
newP.addProp(prop.getKey(), prop.getValue()); // copy props
// annotate types
Collection<Schema> namedTypes = new LinkedHashSet<Schema>();
for (Schema s : p.getTypes())
namedTypes.add(addStringType(s, types));