docs: function() {
          if (!this._eAllSuperTypes) {
              var compute = function(eClass) {
                  var superTypes = eClass.get('eSuperTypes').array(),
                      eAllSuperTypes = _.flatten(_.map(superTypes, function(s) {
                          return s.get('eAllSuperTypes');
                      }));
  
                  return _.union(eAllSuperTypes, superTypes);
              };
  
              this.on('add:eSuperTypes remove:eSuperTypes', function() {
                  this._eAllSuperTypes = compute(this);
              }, this);
  
              this._eAllSuperTypes = compute(this);
          }
  
          return this._eAllSuperTypes;
      }