docs: function () { var A, B, C, D
  
          var A = $trait ({
              beforeInit: function () { A = true; return Promise.resolve () },
              afterInit:  function () { B = true; return Promise.resolve () } })
  
          var B = $trait ({
              beforeInit: function () { C = true; },
              afterInit:  function () { D = true; }
          })
  
          var C = $component ({
              $traits: [B, A] })
  
          return (new C ()).initialized.promise.then (function () {
                                                          $assert (A,B,C,D,true) }) }