diff --git a/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java b/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java
index 23a062f..68b87d3 100644
--- a/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java
+++ b/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java
@@ -54,11 +54,15 @@
 
     DataObject testDynamicSDO();
 
+    void testWebParamSDO(@WebParam(name="foo") DataObject myObject);
+
+    void testWebParamSDOArray(@WebParam(name="foo") DataObject[] myArray);
 /*
-    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
-    void testWebParam(@WebParam(name="simpleInt") int simple);
 
     @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
-    void testWebParamArray(@WebParam(name="arrayInt") int[] array);
+    void testWebParamBare(@WebParam(name="simpleInt") int simple);
+
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    void testWebParamBareArray(@WebParam(name="arrayInt") int[] array);
 */
 }
diff --git a/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java b/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java
index 13e17a6..55e5994 100644
--- a/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java
+++ b/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java
@@ -69,9 +69,17 @@
         return null;
     }
 
-    public void testWebParam(int simple) {
+    public void testWebParamSDO(DataObject myObject) {
     }
 
-    public void testWebParamArray(int[] array) {
+    public void testWebParamSDOArray(DataObject[] myArray) {
     }
+/*
+
+    public void testWebParamBare(int simple) {
+    }
+
+    public void testWebParamBareArray(int[] array) {
+    }
+*/
 }
diff --git a/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java b/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java
index cc0de43..9071edb 100644
--- a/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java
+++ b/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java
@@ -116,25 +116,39 @@
         assertEquals("xs:anyType", returnType("testDynamicSDO"));
     }
 
-/*
     @Test
-    public void testWebParam() throws Exception {
-        Element paramElement = parameterElement("testWebParam");
+    public void testWebParamSDO() throws Exception {
+        Element paramElement = parameterElement("testWebParamSDO");
+        assertEquals("foo", paramElement.getAttribute("name"));
+        assertEquals("xs:anyType", paramElement.getAttribute("type"));
+    }
+
+    @Test
+    public void testWebParamSDOArray() throws Exception {
+        Element paramElement = parameterElement("testWebParamSDOArray");
+        assertEquals("foo", paramElement.getAttribute("name"));
+        assertEquals("xs:anyType", paramElement.getAttribute("type"));
+        assertEquals("unbounded", paramElement.getAttribute("maxOccurs"));
+    }
+/*
+
+    @Test
+    public void testWebParamBare() throws Exception {
+        Element paramElement = parameterElement("testWebParamBare");
         assertEquals("simpleInt", paramElement.getAttribute("name"));
         assertEquals("xs:int", paramElement.getAttribute("type"));
     }
 
     @Test
     @Ignore
-    public void testWebParamArray() throws Exception {
-        Element paramElement = parameterElement("testWebParamArray");
+    public void testWebParamBareArray() throws Exception {
+        Element paramElement = parameterElement("testWebParamBareArray");
         assertEquals("arrayInt", paramElement.getAttribute("name"));
         assertEquals("xs:int", paramElement.getAttribute("type"));
         assertEquals("unbounded", paramElement.getAttribute("maxOccurs"));
     }
 */
 
-
     @BeforeClass
     public static void setUpBeforeClass() throws Exception {
         BaseFramework.start("DataTypes");
