docs: function EndScreen(options) {
  
          /**
           * ### EndScreen.showEmailForm
           *
           * If true, the email form is shown
           *
           * Default: true
           */
          if (options.email === false) {
              options.showEmailForm = false;
          }
          else if ('undefined' === typeof options.showEmailForm) {
              this.showEmailForm = true;
          }
          else if ('boolean' === typeof options.showEmailForm) {
              this.showEmailForm = options.showEmailForm;
          }
          else {
              throw new TypeError('EndScreen constructor: ' +
                                  'options.showEmailForm ' +
                                  'must be boolean or undefined. ' +
                                  'Found: ' + options.showEmailForm);
          }
  
          /**
           * ### EndScreen.showFeedbackForm
           *
           * If true, the feedback form is shown
           *
           * Default: true
           */
          if (options.feedback === false) {
              options.showFeedbackForm = false;
          }
          else if ('undefined' === typeof options.showFeedbackForm) {
              this.showFeedbackForm = true;
          }
          else if ('boolean' === typeof options.showFeedbackForm) {
              this.showFeedbackForm = options.showFeedbackForm;
          }
          else {
              throw new TypeError('EndScreen constructor: ' +
                                  'options.showFeedbackForm ' +
                                  'must be boolean or undefined. ' +
                                  'Found: ' + options.showFeedbackForm);
          }
  
          /**
           * ### EndScreen.showTotalWin
           *
           * If true, the total win is shown
           *
           * Default: true
           */
          if (options.totalWin === false) {
              options.showTotalWin = false;
          }
          else if ('undefined' === typeof options.showTotalWin) {
              this.showTotalWin = true;
          }
          else if ('boolean' === typeof options.showTotalWin) {
              this.showTotalWin = options.showTotalWin;
          }
          else {
              throw new TypeError('EndScreen constructor: ' +
                                  'options.showTotalWin ' +
                                  'must be boolean or undefined. ' +
                                  'Found: ' + options.showTotalWin);
          }
  
          /**
           * ### EndScreen.showExitCode
           *
           * If true, the exit code is shown
           *
           * Default: true
           */
          if (options.exitCode === false) {
              options.showExitCode !== false
          }
          else if ('undefined' === typeof options.showExitCode) {
              this.showExitCode = true;
          }
          else if ('boolean' === typeof options.showExitCode) {
              this.showExitCode = options.showExitCode;
          }
          else {
              throw new TypeError('EndScreen constructor: ' +
                                  'options.showExitCode ' +
                                  'must be boolean or undefined. ' +
                                  'Found: ' + options.showExitCode);
          }
  
          /**
           * ### EndScreen.totalWinCurrency
           *
           * The currency displayed after totalWin
           *
           * Default: 'USD'
           */
          if ('undefined' === typeof options.totalWinCurrency) {
              this.totalWinCurrency = 'USD';
          }
          else if ('string' === typeof options.totalWinCurrency &&
                   options.totalWinCurrency.trim() !== '') {
  
              this.totalWinCurrency = options.totalWinCurrency;
          }
          else {
              throw new TypeError('EndScreen constructor: ' +
                                  'options.totalWinCurrency must be undefined ' +
                                  'or a non-empty string. Found: ' +
                                  options.totalWinCurrency);
          }
  
          /**
           * ### EndScreen.totalWinCb
           *
           * If defined, the return value is displayed inside the totalWin box
           *
           * Accepts two parameters: a data object (as sent from server), and
           * the reference to the EndScreen.
           */
          if (options.totalWinCb) {
              if ('function' === typeof options.totalWinCb) {
                  this.totalWinCb = options.totalWinCb;
              }
              else {
                  throw new TypeError('EndScreen constructor: ' +
                                      'options.totalWinCb ' +
                                      'must be function or undefined. ' +
                                      'Found: ' + options.totalWinCb);
              }
          }
  
          /**
           * ### EndScreen.emailForm
           *
           * EmailForm widget element
           *
           * @see EmailForm
           */
          this.emailForm = null;
  
          /**
           * ### EndScreen.feedback
           *
           * Feedback widget element
           *
           * @see Feedback
           */
          this.feedback = null;
  
          /**
           * ### EndScreen.endScreenElement
           *
           * Endscreen HTML element
           *
           * Default: an HTML element,
           * null initially, element added on append()
           */
          this.endScreenHTML = null;
  
          /**
           * ### EndScreen.askServer
           *
           * If TRUE, after being appended it sends a 'WIN' message to server
           *
           * Default: FALSE
           */
          this.askServer = options.askServer || false;
      }