final FileOutputStream fos = new FileOutputStream(fileName);
final BufferedOutputStream bos = new BufferedOutputStream(fos);
dos = new DataOutputStream(bos);
dos.writeInt(map.size());
for (final Map.Entry<String, ConcurrentMap<String, PluginType>> outer : map.entrySet()) {
dos.writeUTF(outer.getKey());
dos.writeInt(outer.getValue().size());
for (final Map.Entry<String, PluginType> entry : outer.getValue().entrySet()) {
dos.writeUTF(entry.getKey());
final PluginType pt = entry.getValue();
dos.writeUTF(pt.getPluginClass().getName());