public override Score ReadScore()
{
// at first we need to load the binary file system
// from the GPX container
var fileSystem = new GpxFileSystem();
fileSystem.FileFilter = s => s == GpxFileSystem.ScoreGpif;
fileSystem.Load(Data);
// convert data to string
var data = fileSystem.Files[0].Data;
var xml = Std.ToString(data);
// lets set the fileSystem to null, maybe the garbage collector will come along
// and kick the fileSystem binary data before we finish parsing
fileSystem.Files = null;
fileSystem = null;
// the score.gpif file within this filesystem stores
// the score information as XML we need to parse.
var parser = new GpxParser();
parser.ParseXml(xml);
parser.Score.Finish();
return parser.Score;
}