@Override
 public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
   String name = reader.getAttribute(Constants.ATTRIBUTE_RESULT_NAME);
   List<Placement> placements = new ArrayList<Placement>();
   while (reader.hasMoreChildren()) {
     reader.moveDown();
     PlacementXML placementXML = (PlacementXML) context.convertAnother(null, PlacementXML.class);
     placements.add(placementXML.getPlacement());
     reader.moveUp();
   }
   return new ResultXML(name, placements);
 }
    @Override
    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {

      String players = reader.getAttribute(Constants.ATTRIBUTE_BOARD_PLAYERS);
      int numberOfPlayers = new Integer(players).intValue();

      List<Placement> currentPlacements = new ArrayList<Placement>();
      while (reader.hasMoreChildren()) {
        reader.moveDown();
        PlacementXML placementXML = (PlacementXML) context.convertAnother(null, PlacementXML.class);
        currentPlacements.add(placementXML.getPlacement());
        reader.moveUp();
      }

      return new BoardXML(numberOfPlayers, currentPlacements);
    }
 @Override
 public void marshal(
     Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
   PlacementXML placementXML = (PlacementXML) source;
   Placement placement = placementXML.getPlacement();
   writer.addAttribute(
       Constants.ATTRIBUTE_PLACEMENT_C0, placement.getTile().getColor0().toString());
   writer.addAttribute(
       Constants.ATTRIBUTE_PLACEMENT_D0, "" + placement.getCoordinate0().getDistance());
   writer.addAttribute(
       Constants.ATTRIBUTE_PLACEMENT_A0, "" + placement.getCoordinate0().getAngle());
   writer.addAttribute(
       Constants.ATTRIBUTE_PLACEMENT_C1, placement.getTile().getColor1().toString());
   writer.addAttribute(
       Constants.ATTRIBUTE_PLACEMENT_D1, "" + placement.getCoordinate1().getDistance());
   writer.addAttribute(
       Constants.ATTRIBUTE_PLACEMENT_A1, "" + placement.getCoordinate1().getAngle());
 }