   constructor: ( @regexes ) ->
 
   extract: ( source ) ->
-    baseClassName: @baseClassName source
-    className: @controlClassName source
-    members: @memberComments source
-    requiredClasses: @requiredClasses source
+    className = @controlClassName source
+    baseClass = @baseClass source
+    members = @memberComments source
+    requiredClasses = @requiredClasses source
+    results = { className }
+    if baseClass? and baseClass != "Control"
+      results.baseClass = baseClass
+    if members?
+      results.members = members
+    if requiredClasses?
+      results.requiredClasses = requiredClasses
+    results
 
   # Return the name for the control class defined in the source text.
-  baseClassName: ( source ) ->
-    match = @regexes.baseClassName.exec source
+  baseClass: ( source ) ->
+    match = @regexes.baseClass.exec source
     match?[1]
 
   # Remove the comment indicator (e.g., "*") on interior block comment lines.


# Extracts docs from QuickUI markup controls
markupDocsExtractor = new DocsExtractor
  baseClassName: ///
    <prototype>               # Opening prototype tag
    \s*                       # Optional whitespace
    <                         # Open tag for base class instance

    requiredClasses = implicit.concat explicit
    unique = @_unique requiredClasses
    unique.sort()
    if unique.length > 0 then unique else null

  # Return the first capture group for each match of a regex against source text.
  _matches: ( regex, source ) ->
