/**
   * Conversion de Jts Polygon en Kml Polygon
   *
   * @param polygon
   * @return
   */
  private de.micromata.opengis.kml.v_2_2_0.Polygon getAsKmlPolygon(Polygon polygon) {

    de.micromata.opengis.kml.v_2_2_0.Polygon kmlPolygon =
        new de.micromata.opengis.kml.v_2_2_0.Polygon();

    // Ring exterieur
    LineString jtsExteriorRing = polygon.getExteriorRing();
    kmlPolygon
        .createAndSetOuterBoundaryIs()
        .setLinearRing(getAsKmlRing(jtsExteriorRing.getCoordinates()));

    // Rings interieurs
    for (int i = 0; i < polygon.getNumInteriorRing(); i++) {
      kmlPolygon
          .createAndAddInnerBoundaryIs()
          .setLinearRing(getAsKmlRing(polygon.getInteriorRingN(i).getCoordinates()));
    }

    return kmlPolygon;
  }
 @Override
 public Polygon clone() {
   Polygon copy;
   copy = ((Polygon) super.clone());
   copy.outerBoundaryIs =
       ((outerBoundaryIs == null) ? null : ((Boundary) outerBoundaryIs.clone()));
   copy.innerBoundaryIs = new ArrayList<Boundary>((getInnerBoundaryIs().size()));
   for (Boundary iter : innerBoundaryIs) {
     copy.innerBoundaryIs.add(iter.clone());
   }
   copy.polygonSimpleExtension = new ArrayList<Object>((getPolygonSimpleExtension().size()));
   for (Object iter : polygonSimpleExtension) {
     copy.polygonSimpleExtension.add(iter);
   }
   copy.polygonObjectExtension =
       new ArrayList<AbstractObject>((getPolygonObjectExtension().size()));
   for (AbstractObject iter : polygonObjectExtension) {
     copy.polygonObjectExtension.add(iter.clone());
   }
   return copy;
 }