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

      [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

      )+
    )
  ///
  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
