public static boolean verifyItunesLibrary(String libraryFilename, StatusUpdateLogger logger) throws IOException
    {
    	if (logger == null)
    	{
    		logger = new NullStatusUpdateLogger();
    	}
    	
        //libraryFilename is verified as existing, and being readable by fileIsItunesLibrary()
        
        //the standard library file looks something like this at the top:
        //    <?xml version="1.0" encoding="UTF-8"?>
        //    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
        //    <plist version="1.0">
        //        <dict>
        //            <key>Major Version</key><integer>1</integer>
        //            <key>Minor Version</key><integer>1</integer>
        //            <key>Application Version</key><string>6.0.5</string>
        //            <key>Features</key><integer>1</integer>
        //            <key>Music Folder</key><string>file://localhost/E:/itunes/</string>
        //            <key>Library Persistent ID</key><string>4EC2FAC25152379E</string>
        //            <key>Tracks</key>
        //
        // so all we're going to do is read a reasonable amount of the library header into a buffer
        //  and then do some quick checks on some identifying strings existing in the buffer
        FileReader libraryFile = new FileReader(libraryFilename);
        
        char[] buffer = new char[3000];
        libraryFile.read(buffer, 0, 3000);
        libraryFile.close();
        
        String betterBuffer = new String(buffer);
        
        if (checkBufferForString(betterBuffer, "Apple Computer") &&
            checkBufferForString(betterBuffer, "<key>Major Version</key>") &&
            checkBufferForString(betterBuffer, "<key>Minor Version</key>") &&
            checkBufferForString(betterBuffer, "<key>Music Folder</key>") &&
            checkBufferForString(betterBuffer, "<key>Application Version</key>") &&
            checkBufferForString(betterBuffer, "<key>Tracks</key>"))
        {
            return true;
        }
        else
        {
            return false;
        }            
    }