diff --git a/test/DocTest.thrift b/test/DocTest.thrift
index 682edff..c06bd21 100755
--- a/test/DocTest.thrift
+++ b/test/DocTest.thrift
@@ -6,14 +6,14 @@
 
 # the new unix comment
 
-[Some doc text goes here.  Wow I am [nesting these].]
+/** Some doc text goes here.  Wow I am [nesting these] (no more nesting.) */
 enum Numberz
 {
 
-  [This is how to document a parameter]
+  /** This is how to document a parameter */
   ONE = 1,
 
-  [And this is a doc for a parameter that has no specific value assigned]
+  /** And this is a doc for a parameter that has no specific value assigned */
   TWO,
 
   THREE,
@@ -22,17 +22,17 @@
   EIGHT = 8
 }
 
-[This is how you would do a typedef doc]
+/** This is how you would do a typedef doc */
 typedef i64 UserId 
 
-[And this is where you would document a struct]
+/** And this is where you would document a struct */
 struct Xtruct
 {
 
-  [And the members of a struct]
+  /** And the members of a struct */
   1:  string string_thing
 
-  [doct text goes before a comma]
+  /** doct text goes before a comma */
   4:  byte   byte_thing,
 
   9:  i32    i32_thing,
@@ -46,14 +46,14 @@
   3: i32    i32_thing
 }
 
-[Struct insanity]
+/** Struct insanity */
 struct Insanity
 {
 
-  [This is doc for field 1]
+  /** This is doc for field 1 */
   1: map<Numberz, UserId> userMap,
 
-  [And this is doc for field 2]
+  /** And this is doc for field 2 */
   2: list<Xtruct> xtructs 
 }
 
@@ -73,17 +73,17 @@
   1: EmptyStruct field
 }
 
-[This is where you would document a Service]
+/** This is where you would document a Service */
 service ThriftTest
 {
 
-  [And this is how you would document functions in a service]
+  /** And this is how you would document functions in a service */
   void         testVoid(),
   string       testString(1: string thing),
   byte         testByte(1: byte thing),
   i32          testI32(1: i32 thing),
 
-  [Like this one]
+  /** Like this one */
   i64          testI64(1: i64 thing),
   double       testDouble(1: double thing),
   Xtruct       testStruct(1: Xtruct thing),
@@ -92,10 +92,10 @@
   set<i32>     testSet(1: set<i32> thing),
   list<i32>    testList(1: list<i32> thing),
 
-  [This is an example of a function with params documented]
+  /** This is an example of a function with params documented */
   Numberz      testEnum(
 
-    [This param is a thing]
+    /** This param is a thing */
     1: Numberz thing
 
   ),
@@ -120,7 +120,94 @@
   Xtruct testMultiException(string arg0, string arg1) throws(Xception err1, Xception2 err2)
 }
 
-service SecondService
-{
-  void blahBlah()
-}
+/// This style of Doxy-comment doesn't work.
+typedef i32 SorryNoGo
+
+/**
+ * This is a trivial example of a multiline docstring.
+ */
+typedef i32 TrivialMultiLine
+
+/**
+ * This is the cannonical example
+ * of a multiline docstring.
+ */
+typedef i32 StandardMultiLine
+
+/**
+ * The last line is non-blank.
+ * I said non-blank! */
+typedef i32 LastLine
+
+/** Both the first line
+ * are non blank. ;-)
+ * and the last line */
+typedef i32 FirstAndLastLine
+
+/**
+ *    INDENTED TITLE
+ * The text is less indented.
+ */
+typedef i32 IndentedTitle
+
+/**       First line indented.
+ * Unfortunately, this does not get indented.
+ */
+typedef i32 FirstLineIndent
+
+
+/**
+ * void code_in_comment() {
+ *   printf("hooray code!");
+ * }
+ */
+typedef i32 CodeInComment
+
+    /**
+     * Indented Docstring.
+     * This whole docstring is indented.
+     *   This line is indented further.
+     */
+typedef i32 IndentedDocstring
+
+/** Irregular docstring.
+ * We will have to punt
+  * on this thing */
+typedef i32 Irregular1
+
+/**
+ * note the space
+ * before these lines
+* but not this
+ * one
+ */
+typedef i32 Irregular2
+
+/**
+* Flush against
+* the left.
+*/
+typedef i32 Flush
+
+/**
+  No stars in this one.
+  It should still work fine, though.
+    Including indenting.
+    */
+typedef i32 NoStars
+
+/** Trailing whitespace   
+Sloppy trailing whitespace   
+is truncated.   */
+typedef i32 TrailingWhitespace
+
+/**
+ * This is a big one.
+ *
+ * We'll have some blank lines in it.
+ * 
+ * void as_well_as(some code) {
+ *   puts("YEEHAW!");
+ * }
+ */
+typedef i32 BigDog
