docs: public ShapeDataList<ShapeData> getShapeHistory(String placeId, String woeId) throws FlickrException {
          ShapeDataList<ShapeData> shapeList = new ShapeDataList<ShapeData>();
          Map<String, Object> parameters = new HashMap<String, Object>();
          parameters.put("method", METHOD_GET_SHAPEHISTORY);
  
          if (placeId != null) {
              parameters.put("place_id", placeId);
          }
          if (woeId != null) {
              parameters.put("woe_id", woeId);
          }
  
          Response response = transportAPI.get(transportAPI.getPath(), parameters, apiKey, sharedSecret);
          if (response.isError()) {
              throw new FlickrException(response.getErrorCode(), response.getErrorMessage());
          }
          Element shapeElements = response.getPayload();
          shapeList.setTotal(Integer.parseInt(shapeElements.getAttribute("total")));
          shapeList.setWoeId(shapeElements.getAttribute("woe_id"));
          shapeList.setPlaceId(shapeElements.getAttribute("place_id"));
          shapeList.setPlaceType(shapeElements.getAttribute("place_type"));
          shapeList.setPlaceTypeId(Integer.parseInt(shapeElements.getAttribute("place_type_id")));
          NodeList shapeNodes = shapeElements.getElementsByTagName("shape");
          for (int i = 0; i < shapeNodes.getLength(); i++) {
              Element shapeElement = (Element) shapeNodes.item(i);
              ShapeData data = new ShapeData();
              data.setAlpha(Double.parseDouble(shapeElement.getAttribute("alpha")));
              data.setCountEdges(Integer.parseInt(shapeElement.getAttribute("count_edges")));
              data.setCountPoints(Integer.parseInt(shapeElement.getAttribute("count_points")));
              data.setCreated(shapeElement.getAttribute("created"));
              data.setIsDonutHole("1".equals(shapeElement.getAttribute("is_donuthole")));
              data.setHasDonuthole("1".equals(shapeElement.getAttribute("has_donuthole")));
  
              Element polyElement = XMLUtilities.getChild(shapeElement, "polylines");
              data.setPolyline(XMLUtilities.getChildValue(polyElement, "polyline"));
              Element urlElement = XMLUtilities.getChild(shapeElement, "urls");
              data.setShapefile(XMLUtilities.getChildValue(urlElement, "shapefile"));
              shapeList.add(data);
          }
  
          return shapeList;
      }