// does not close stream received. Caller is responsible to close if it wants it internal static List <ActivityPackage> DeserializeListFromStream(Stream stream) { List <ActivityPackage> activityPackageList = null; var reader = new BinaryReader(stream); var activityPackageLength = reader.ReadInt32(); activityPackageList = new List <ActivityPackage>(activityPackageLength); for (int i = 0; i < activityPackageLength; i++) { activityPackageList.Add( ActivityPackage.DeserializeFromStream(stream) ); } return(activityPackageList); }