diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java
index feeaa56..8339187 100644
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java
+++ b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java
@@ -84,7 +84,7 @@
 import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.TIME_TYPE;
 import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.XMLTYPE_TYPE;
 
-@SuppressWarnings("all")
+@SuppressWarnings("all")
 public class DDLParser/*@bgen(jjtree)*/implements DDLParserTreeConstants, DDLParserConstants {/*@bgen(jjtree)*/
   protected JJTDDLParserState jjtree = new JJTDDLParserState();
     protected Map<String, DatabaseType> localTypes = new HashMap<String, DatabaseType>();
@@ -1341,6 +1341,14 @@
     default:
       ;
     }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case O_COMMA:
+      jj_consume_token(O_COMMA);
+      constructorDeclaration();
+      break;
+    default:
+      ;
+    }
   }
 
   final public void uniqList() throws ParseException {
@@ -3552,8 +3560,9 @@
     catch(LookaheadSuccess ls) { return true; }
   }
 
-  private boolean jj_3R_13() {
-    if (jj_scan_token(R_ANCHORED_TYPE)) return true;
+  private boolean jj_3R_61() {
+    if (jj_scan_token(K_VARYING)) return true;
+    if (jj_scan_token(K_ARRAY)) return true;
     return false;
   }
 
@@ -3562,12 +3571,6 @@
     return false;
   }
 
-  private boolean jj_3R_61() {
-    if (jj_scan_token(K_VARYING)) return true;
-    if (jj_scan_token(K_ARRAY)) return true;
-    return false;
-  }
-
   private boolean jj_3_10() {
     if (jj_3R_12()) return true;
     Token xsp;
@@ -3584,6 +3587,11 @@
     return false;
   }
 
+  private boolean jj_3_8() {
+    if (jj_3R_10()) return true;
+    return false;
+  }
+
   private boolean jj_3R_24() {
     if (jj_scan_token(K_LONG)) return true;
     Token xsp;
@@ -3594,11 +3602,6 @@
     return false;
   }
 
-  private boolean jj_3_8() {
-    if (jj_3R_10()) return true;
-    return false;
-  }
-
   private boolean jj_3R_54() {
     if (jj_scan_token(K_NCHAR)) return true;
     Token xsp;
@@ -3741,11 +3744,6 @@
     return false;
   }
 
-  private boolean jj_3_1() {
-    if (jj_3R_6()) return true;
-    return false;
-  }
-
   private boolean jj_3R_22() {
     if (jj_scan_token(K_SIGNTYPE)) return true;
     return false;
@@ -3759,6 +3757,11 @@
     return false;
   }
 
+  private boolean jj_3_1() {
+    if (jj_3R_6()) return true;
+    return false;
+  }
+
   private boolean jj_3R_21() {
     if (jj_scan_token(K_POSITIVE)) return true;
     return false;
@@ -4643,6 +4646,11 @@
     return false;
   }
 
+  private boolean jj_3R_13() {
+    if (jj_scan_token(R_ANCHORED_TYPE)) return true;
+    return false;
+  }
+
   /** Generated Token Manager. */
   public DDLParserTokenManager token_source;
   JavaCharStream jj_input_stream;
diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj
index 623f483..82d39c7 100644
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj
+++ b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj
Binary files differ
diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
index 5fa378d..f35a0b4 100644
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
+++ b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
Binary files differ
diff --git a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/PackagewStronglyTypedCursorDDLTestSuite.java b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/PackagewStronglyTypedCursorDDLTestSuite.java
index 563f33e..708b5a6 100644
--- a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/PackagewStronglyTypedCursorDDLTestSuite.java
+++ b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/PackagewStronglyTypedCursorDDLTestSuite.java
@@ -142,7 +142,11 @@
         String msg = null;
         try {
             String schema = System.getProperty(DATABASE_USERNAME_KEY, DEFAULT_DATABASE_USERNAME);
-            packageType = dtBuilder.buildPackages(conn, schema, STRONGLY_TYPED_REF_CURSOR_TEST_PACKAGE).get(0);
+            List<PLSQLPackageType> packages = dtBuilder.buildPackages(conn, schema, STRONGLY_TYPED_REF_CURSOR_TEST_PACKAGE);
+            packageType = packages.get(0);
+            List<ProcedureType> procedures = packageType.getProcedures();
+            assertTrue(procedures.size() == 1);
+            procType = procedures.get(0);
         }
         catch (Exception e) {
             worked = false;
diff --git a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/ddlparser/TypeDDLTestSuite.java b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/ddlparser/TypeDDLTestSuite.java
index fcaf539..2095fcc 100644
--- a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/ddlparser/TypeDDLTestSuite.java
+++ b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/ddlparser/TypeDDLTestSuite.java
@@ -263,5 +263,29 @@
         assertEquals("incorrect type name " + TYPE_W_KEYWORDS,
             TYPE_W_KEYWORDS, typeWithKeyword.getTypeName());
     }
+    
+    static final String TYPE_NAME = "CUSTOM_CONS_TYPE";
+    static final String CREATE_TYPE_WITH_MULTIPLE_CONSTRUCTORS = CREATE_TYPE_PREFIX + TYPE_NAME + " AS OBJECT(" +
+            "\n    status varchar2(5)," +
+            "\n    orauser varchar2(40)," +
+            "\n    comments varchar2(1000)," +
+            "\nconstructor function " + TYPE_NAME + "(i_status in boolean, i_orauser in varchar2, i_comments in varchar2) return self as result," +
+            "\nconstructor function " + TYPE_NAME + "(i_status in varchar2, i_comments in varchar2) return self as result," +
+            "\nconstructor function " + TYPE_NAME + "(i_status in varchar2) return self as result)";
+    @Test
+    public void testTypeWithMultipleConstructors() {
+        parser.ReInit(new StringReader(CREATE_TYPE_WITH_MULTIPLE_CONSTRUCTORS));
+        boolean worked = true;
+        String message = "";
+        ObjectType typeWithMultipleConstructors = null;
+        try {
+            typeWithMultipleConstructors = (ObjectType)parser.parseType();
+        } catch (ParseException pe) {
+            message = pe.getMessage();
+            worked = false;
+        }
+        assertTrue("type with multiple constructors did not parse:\n" + message, worked);
+        assertEquals("incorrect type name " + TYPE_NAME, TYPE_NAME, typeWithMultipleConstructors.getTypeName());
+    }
 
 }
\ No newline at end of file
