* @throws UnsupportedEncodingException
	 */
	int dataSize() throws UnsupportedEncodingException
	{
		headerSize = groupTableSize = versionTableSize = 
			pairsTableSize = dataTableSize = 0;
		// header
		headerSize = MVDFile.MVD_MAGIC.length; // magic
		headerSize += 5 * 4; // table offsets etc
		/*try
		{
			MVDError.log( this.toString() );
		}
		catch ( Exception e )
		{
		}*/
		headerSize += measureUtf8String( description );
		headerSize += measureUtf8String( encoding );
		groupTableSize = 2; // number of groups
		for ( int i=0;i<groups.size();i++ )
		{
			Group g = groups.get( i );
			groupTableSize += g.dataSize();
		}
		versionTableSize = 2 + 2; // number of versions + setSize
		for ( int i=0;i<versions.size();i++ )
		{
			Version v = versions.get( i );
			versionTableSize += v.dataSize();
		}
		pairsTableSize = 4;	// number of pairs
		versionSetSize = (versions.size()+8)/8;
		for ( int i=0;i<pairs.size();i++ )
		{
			Pair p = pairs.get( i );
			pairsTableSize += p.pairSize(versionSetSize);
			dataTableSize += p.dataSize();
		}
		return headerSize + groupTableSize + versionTableSize 
			+ pairsTableSize + dataTableSize;
	}