code: public long updateMap(Map<String, String> tags, Iterable<Element> elements,
  						  Handler<DiffElement> handler)
  	{
  		tags.put("created_by", osm.getUserAgent());
  
  		long changesetId = openChangeset(tags);
  		/* the try-finally is not really necessary because the server closes an open changeset after
  		   24 hours automatically but it is nicer if we clean up after ourselves in case of error
  		   ourselves. */
  		try
  		{
  			uploadChanges(changesetId, elements, handler);
  		}
  		finally
  		{
  			closeChangeset(changesetId);
  		}
  
  		return changesetId;
  	}
docs: Opens a changeset, uploads the data, closes the changeset and subscribes the user to it.
  
  @param tags tags of this changeset. Usually it is comment and source.
  See {@link #updateMap(String, String, Iterable, Handler)}
  @param elements elements to upload. No special order required
  @param handler handler that processes the server's diffResult response. Optional.
  
  @throws OsmAuthorizationException if the application does not have permission to edit the
  map (Permission.MODIFY_MAP)
  
  @return id of the changeset that was created