/** * Creates a deep copy clone of the FeatureTypeStyle. * * @see org.geotools.styling.FeatureTypeStyle#clone() */ @Override public Object clone() { FeatureTypeStyle clone; try { clone = (FeatureTypeStyle) super.clone(); } catch (final CloneNotSupportedException e) { throw new AssertionError(e); // this should never happen. } final List rulesCopy = new ArrayList(); for (final Rule rl : rules) { rulesCopy.add((Rule) ((Cloneable) rl).clone()); } ((FeatureTypeStyleImpl) clone).rules = new ArrayList(); ((FeatureTypeStyleImpl) clone).featureTypeNames = new LinkedHashSet(); ((FeatureTypeStyleImpl) clone).semantics = new LinkedHashSet(); @SuppressWarnings("unchecked") final List cloneRules = (List) clone.rules(); cloneRules.addAll(rulesCopy); clone.featureTypeNames().addAll(featureTypeNames); clone.semanticTypeIdentifiers().addAll(semantics); return clone; }