Index: src/test/java/org/geotools/styling/SLDTransformerTest.java
===================================================================
--- src/test/java/org/geotools/styling/SLDTransformerTest.java	(revision 38273)
+++ src/test/java/org/geotools/styling/SLDTransformerTest.java	(working copy)
@@ -967,4 +967,38 @@
                 .getOtherText().getText());        
         
     }
+    
+    /**
+     * Test that InitialGap and Gap of GraphicStroke is correctly ex- and reimported
+     * 
+     * @throws TransformerException
+     * @throws SAXException
+     * @throws IOException
+     * @throws XpathException
+     */
+    @Test
+    public void testLineSymbolizerGraphicStrokeWithInitialGapAndGap() throws TransformerException, SAXException, IOException, XpathException {
+        StyleBuilder sb = new StyleBuilder(); 
+        LineSymbolizer ls = sb.createLineSymbolizer();
+        ls.getStroke().setGraphicStroke(sf.createDefaultGraphic());
+        ls.getStroke().getGraphicStroke().setInitialGap(ff.literal(0.77));
+        ls.getStroke().getGraphicStroke().setGap(ff.literal(0.44));
+        
+        //check XML
+        Document doc = buildTestDocument(transformer.transform(ls));
+        assertXpathEvaluatesTo("1", "count(/sld:LineSymbolizer/sld:Stroke/sld:GraphicStroke/sld:InitialGap)", doc);
+        assertXpathEvaluatesTo("1", "count(/sld:LineSymbolizer/sld:Stroke/sld:GraphicStroke/sld:Gap)", doc);
+        
+        // Transform, reimport and compare
+        String xml = transformer.transform(sb.createStyle(ls));
+
+        SLDParser sldParser = new SLDParser(sf);
+        sldParser.setInput(new StringReader(xml));
+        Style importedStyle = (Style) sldParser.readXML()[0];
+        LineSymbolizer copy = (LineSymbolizer) importedStyle.featureTypeStyles().get(0).rules().get(0).symbolizers().get(0);
+        
+        // compare
+        assertEquals("InitialGap of GraphicStroke has not been correctly ex- and reimported",ls.getStroke().getGraphicStroke().getInitialGap(),copy.getStroke().getGraphicStroke().getInitialGap());
+        assertEquals("Gap of GraphicStroke has not been correctly ex- and reimported",ls.getStroke().getGraphicStroke().getGap(),copy.getStroke().getGraphicStroke().getGap());
+    }
 }
Index: src/test/java/org/geotools/styling/visitor/DuplicatorStyleVisitorTest.java
===================================================================
--- src/test/java/org/geotools/styling/visitor/DuplicatorStyleVisitorTest.java	(revision 38273)
+++ src/test/java/org/geotools/styling/visitor/DuplicatorStyleVisitorTest.java	(working copy)
@@ -776,4 +776,22 @@
         assertEquals("OtherText of TextSymbolizer2 has not been correctly duplicated", otherText.getText(), copy
                 .getOtherText().getText());        
     }
+    
+    /*
+     * Tests that InitialGap and Gap for GraphicStroke in LineSymbolizer is duplicated correctly
+     */
+    public void testLineSymbolizerGraphicStrokeWithInitialGapAndGap(){
+        LineSymbolizer ls = sf.createLineSymbolizer();
+        ls.setStroke(sf.getDefaultStroke());
+        ls.getStroke().setGraphicStroke(sf.createDefaultGraphic());
+        ls.getStroke().getGraphicStroke().setInitialGap(ff.literal(0.88));
+        ls.getStroke().getGraphicStroke().setGap(ff.literal(0.44));
+        
+        //copy
+        LineSymbolizer copy = (LineSymbolizer) visitor.copy(ls);
+        
+        //compare
+        assertEquals("InitialGap of GraphicStroke has not been correctly ex- and reimported",ls.getStroke().getGraphicStroke().getInitialGap(),copy.getStroke().getGraphicStroke().getInitialGap());
+        assertEquals("Gap of GraphicStroke has not been correctly ex- and reimported",ls.getStroke().getGraphicStroke().getGap(),copy.getStroke().getGraphicStroke().getGap());
+    }
 }
