public int Write( BinaryWriter writer ) {
			if ( m_record == null ) {
				m_record = new PathTableRecord();
				m_record.Length = 1;
				m_record.Identifier = new byte[1] { 65 };
			}

			writer.Write( m_record.Length );
			writer.Write( m_record.ExtendedLength );
			writer.Write( m_record.ExtentLocation );
			writer.Write( m_record.ParentNumber );
			writer.Write( m_record.Identifier );

			if ( m_record.Length%2 == 1 ) {
				writer.Write( (byte)0 );
			}

			return 8+m_record.Length+( m_record.Length%2 );
		}
		private void SetPathTableRecord( UInt32 extentLocation, UInt16 parentNumber, byte[] identifier ) {
			if ( m_record == null ) {
				m_record = new PathTableRecord();
			}

			m_record.Length = (byte)identifier.Length;

			if ( identifier.Length > 255 ) {
				throw new Exception( "Depasire!" );
			}

			m_record.Identifier = identifier;

			m_record.ExtentLocation = extentLocation;
			m_record.ParentNumber = parentNumber;

			if ( m_volumeDescriptorType == VolumeType.Suplementary && ( identifier.Length>1 || identifier[0]!=0 ) ) {
				m_volumeDescriptorType = VolumeType.Primary;
				this.VolumeDescriptorType = VolumeType.Suplementary;
			}
		}