protected void doGetRestorableStateForAVPair(
     String key, Object value, RestorableSupport rs, RestorableSupport.StateObject context) {
   if (value instanceof URLBuilder) {
     rs.addStateValueAsString(context, "wms.Version", ((URLBuilder) value).wmsVersion);
     rs.addStateValueAsString(context, "wms.Crs", ((URLBuilder) value).crs);
   } else {
     super.doGetRestorableStateForAVPair(key, value, rs, context);
   }
 }
  public void getRestorableState(RestorableSupport rs, RestorableSupport.StateObject so) {
    rs.addStateValueAsBoolean(so, "drawInterior", this.isDrawInterior());

    rs.addStateValueAsBoolean(so, "drawOutline", this.isDrawOutline());

    rs.addStateValueAsBoolean(so, "enableAntialiasing", this.isEnableAntialiasing());

    this.getInteriorMaterial().getRestorableState(rs, rs.addStateObject(so, "interiorMaterial"));

    this.getOutlineMaterial().getRestorableState(rs, rs.addStateObject(so, "outlineMaterial"));

    rs.addStateValueAsDouble(so, "interiorOpacity", this.getInteriorOpacity());

    rs.addStateValueAsDouble(so, "outlineOpacity", this.getOutlineOpacity());

    rs.addStateValueAsDouble(so, "outlineWidth", this.getOutlineWidth());

    rs.addStateValueAsInteger(so, "outlineStippleFactor", this.getOutlineStippleFactor());

    rs.addStateValueAsInteger(so, "outlineStipplePattern", this.getOutlineStipplePattern());

    if (this.getInteriorImageSource() != null && this.getInteriorImageSource() instanceof String)
      rs.addStateValueAsString(so, "interiorImagePath", (String) this.getInteriorImageSource());

    rs.addStateValueAsDouble(so, "interiorImageScale", this.getInteriorImageScale());
  }
  public void getRestorableStateForAVPair(
      String key, Object value, RestorableSupport rs, RestorableSupport.StateObject context) {
    if (value == null) return;

    if (key.equals(PROPERTY_CHANGE_SUPPORT)) return;

    if (rs == null) {
      String message = Logging.getMessage("nullValue.RestorableStateIsNull");
      Logging.logger().severe(message);
      throw new IllegalArgumentException(message);
    }

    rs.addStateValueAsString(context, key, value.toString());
  }