       )+
     )
   ///
+  comments: ///
+    (                         # First group captures the comment
+      (?:                     # Non-capturing group for each comment line
+        \r?\n\x20\x20# .*     # A comment line indented two spaces
+      )
+      +                       # Any non-zero number of comment lines
+    )
+    \r?\n\x20\x20             # Identifier line indented two spaces
+    (                         # Second group captures the identifier
+      [a-zA-Z0-9\$][\w]+      # JavaScript member identifier
+    )
+    :                         # Colon terminates identifier
+  ///g
+  commentText: /^\s*#[ ]?(.*)/gm
   referencedClasses: ///
     \r?\n                     # Start of a line
     \s+                       # Whitespace

      [a-zA-Z0-9\$][\w]+      # JavaScript identifier
    )
  ///
  comments: ///
    (                         # First group captures the comment
      (?:                     # Non-capturing group for each comment line
        \r?\n\x20\x20# .*     # A comment line indented two spaces
      )
      +                       # Any non-zero number of comment lines
    )
    \r?\n\x20\x20             # Identifier line indented two spaces
    (                         # Second group captures the identifier
      [a-zA-Z0-9\$][\w]+      # JavaScript member identifier
    )
    :                         # Colon terminates identifier
  ///g
  commentText: /^\s*#[ ]?(.*)/gm
  content: ///
    \r?\n                     # Start of a line
    \s\s                      # Required indent of two spaces


  # Return the array of classes both implicitly and explicitly required.
  requiresClasses: ( source ) ->
    implicit = ( @implicitRequiredClasses source ) ? []
    explicit = ( @explicitRequiredClasses source ) ? []
    requiresClasses = implicit.concat explicit
    unique = @_unique requiresClasses
    unique.sort()
