/**
           * Creates a new area code map serializing the provided area code map to a stream and then reading
           * this stream. The resulting area code map is expected to be strictly equal to the provided one
           * from which it was generated.
           */
        private static AreaCodeMap createNewAreaCodeMap(AreaCodeMap areaCodeMap)
        {
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
            areaCodeMap.writeExternal(objectOutputStream);
            objectOutputStream.flush();

            AreaCodeMap newAreaCodeMap = new AreaCodeMap();
            newAreaCodeMap.readExternal(
            new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())));
            return newAreaCodeMap;
        }
   /**
      * Gets the size of the provided area code map storage. The map storage passed-in will be filled
      * as a result.
      */
   private static int getSizeOfAreaCodeMapStorage(AreaCodeMapStorageStrategy mapStorage,
 SortedMap<Integer, String> areaCodeMap)
   {
       mapStorage.readFromSortedMap(areaCodeMap);
       ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
       ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
       mapStorage.writeExternal(objectOutputStream);
       objectOutputStream.flush();
       int sizeOfStorage = byteArrayOutputStream.size();
       objectOutputStream.close();
       return sizeOfStorage;
   }