code: protected SparseArray<ReleaseItem> readChangeLog(XmlPullParser xml, boolean full) {
          SparseArray<ReleaseItem> result = new SparseArray<ReleaseItem>();
  
          try {
              int eventType = xml.getEventType();
              while (eventType != XmlPullParser.END_DOCUMENT) {
                  if (eventType == XmlPullParser.START_TAG && xml.getName().equals(ReleaseTag.NAME)) {
                      if (parseReleaseTag(xml, full, result)) {
                          // Stop reading more elements if this entry is not newer than the last
                          // version.
                          break;
                      }
                  }
                  eventType = xml.next();
              }
          } catch (XmlPullParserException e) {
              Log.e(LOG_TAG, e.getMessage(), e);
          } catch (IOException e) {
              Log.e(LOG_TAG, e.getMessage(), e);
          }
  
          return result;
      }
docs: Read the change log from an XML file.
  
  @param xml
  The {@code XmlPullParser} instance used to read the change log.
  @param full
  If {@code true} the full change log is read. Otherwise only the changes since the
  last (saved) version are read.
  
  @return A {@code SparseArray} mapping the version codes to release information.