### Question:
CombinedRangeCategoryPlot extends CategoryPlot implements PlotChangeListener { private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); ValueAxis rangeAxis = getRangeAxis(); if (rangeAxis != null) { rangeAxis.configure(); } } CombinedRangeCategoryPlot();  CombinedRangeCategoryPlot(ValueAxis rangeAxis); double getGap(); void setGap(double gap); void add(CategoryPlot subplot); void add(CategoryPlot subplot, int weight); void remove(CategoryPlot subplot); List<CategoryPlot> getSubplots(); @Override void draw(Graphics2D g2, Rectangle2D area, Point2D anchor,
            PlotState parentState, PlotRenderingInfo info); @Override void setOrientation(PlotOrientation orientation); @Override void setShadowGenerator(ShadowGenerator generator); @Override Range getDataRange(ValueAxis axis); @Override List<LegendItem> getLegendItems(); @Override void handleClick(int x, int y, PlotRenderingInfo info); @Override void plotChanged(PlotChangeEvent event); @Override boolean equals(Object obj); @Override Object clone();  }### Answer:
@Test public void testSerialization() throws IOException, ClassNotFoundException { CombinedRangeCategoryPlot plot1 = createPlot(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(buffer); out.writeObject(plot1); out.close(); ObjectInput in = new ObjectInputStream(new ByteArrayInputStream( buffer.toByteArray())); CombinedRangeCategoryPlot plot2 = (CombinedRangeCategoryPlot) in.readObject(); in.close(); assertEquals(plot1, plot2); }