public void testCloning() {
        DefaultMultiValueCategoryDataset d1 
                = new DefaultMultiValueCategoryDataset();
        DefaultMultiValueCategoryDataset d2 = null;
        try {
            d2 = (DefaultMultiValueCategoryDataset) d1.clone();
        }
        catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        assertTrue(d1 != d2);
        assertTrue(d1.getClass() == d2.getClass());
        assertTrue(d1.equals(d2));
        
        // try a dataset with some content...
        List values = new ArrayList();
        values.add(new Integer(99));
        d1.add(values, "R1", "C1");
        try {
            d2 = (DefaultMultiValueCategoryDataset) d1.clone();
        }
        catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        assertTrue(d1 != d2);
        assertTrue(d1.getClass() == d2.getClass());
        assertTrue(d1.equals(d2));
        
        // check that the clone doesn't share the same underlying arrays.
        List values2 = new ArrayList();
        values2.add(new Integer(111));
        d1.add(values2, "R2", "C2");
        assertFalse(d1.equals(d2));
        d2.add(values2, "R2", "C2");
        assertTrue(d1.equals(d2));