public SurfaceBoundaryImpl clone() throws CloneNotSupportedException { // Test OK // Clone exterior ring and interior rings Ring newExterior = (Ring) this.getExterior().clone(); List<Ring> newInteriors = new ArrayList<Ring>(); Iterator<Ring> interiors = this.getInteriors().iterator(); while (interiors.hasNext()) { newInteriors.add((Ring) interiors.next().clone()); } // Use the cloned rings to create a new SurfaceBoundary return new SurfaceBoundaryImpl(getCoordinateReferenceSystem(), newExterior, newInteriors); }