 # Explicitly define Control as a window member if we have a window.
 # The check is in case we're running in a headless state, e.g., Node.
 window?.Control = Control
-

      # Property value implicitly handed to content() property.
      properties = content: properties

    $controls
      # Save a reference to the controls' class.
      .controlClass( this )
      # Apply all class names in the class hierarchy as style names.
      # This lets the element pick up styles defined by those classes.
      .addClass( cssClasses this )
      # Render controls as DOM elements.
      .render()
      # Pass in the target's old contents ( if any ).

  ###    
  initialize: ->


  ###
  A *class* method to force initialization of the data associated with a class.
  A class will be implicitly initialized if an attempt is made to instantiate
  it. However, if a tool wants to statically inspect a class without
  instantiating it, this method can be called to ensure the class is properly
  set up. Invoking this method more than once does no harm.

  The class members set up in this method are:
  .className: the name of the class
  .classes: all CSS class names applied to new instances of that control class
  ###
  @initialize: ->
    unless @::hasOwnProperty "className"
      # Get class name from function in modern browser, otherwise parse constructor.
      @::className = @name ? /function\s+([^\( ]*)/.exec( @toString() )[1]
    unless @::hasOwnProperty "classes"
      superclass = @superclass()
      superclass.initialize() # Initialize superclass first.
      @::classes = @::className + " " + superclass::classes

  ###
  Rendering a control lets each class in the control class' hierarchy,
