@Override
 public void toXml(XmlSerializer serializer) throws IOException {
   XmlSerializer element = serializer.startTag(null, "three-current-positions");
   XppUtils.setAttributeValueToNode(element, "total", getTotal());
   for (Position position : getPositionList()) {
     ((PositionImpl) position).toXml(serializer);
   }
   serializer.endTag(null, "positions");
 }
  @Override
  public void init(XmlPullParser parser) throws IOException, XmlPullParserException {
    parser.require(XmlPullParser.START_TAG, null, null);
    setTotal(XppUtils.getAttributeValueAsLongFromNode(parser, "total"));

    while (parser.nextTag() == XmlPullParser.START_TAG) {
      String name = parser.getName();

      if (name.equals("position")) {
        PositionImpl positionImpl = new PositionImpl();
        positionImpl.init(parser);
        getPositionList().add(positionImpl);
      } else {
        // Consume something we don't understand.
        LOG.warning("Found tag that we don't recognize: " + name);
        XppUtils.skipSubTree(parser);
      }
    }
  }