docs: function Roler() {
  
          /**
           * ### Roler.roles
           *
           * List of all available roles
           *
           * @see Roler.setRoles
           */
          this.roles = {};
  
          /**
           * ### Roler.rolesArray
           *
           * The array of currently available roles
           *
           * @see Roler.setRoles
           * @see Roler.clear
           */
          this.rolesArray = [];
  
          /**
           * ### Roler.rolifiedMatches
           *
           * Array of arrays of roles assigned for all matches in all rounds
           *
           * For example:
           * ```javascript
           * [
           *     // Round 1.
           *     [  [ 'ROLE_A', 'ROLE_B' ], [ 'ROLE_A', 'ROLE_B' ], ... ],
           *     // Round 2.
           *     [  [ 'ROLE_A', 'ROLE_B' ], [ 'ROLE_A', 'ROLE_B' ], ... ],
           *     ...
           * ]
           * ```
           *
           * @see Roler.rolifyAll
           * @see Roler.setRolifiedMatches
           */
          this.rolifiedMatches = null;
  
          /**
           * ### Roler.role2IdMatches
           *
           * Array of arrays of maps role to id/s for all matches in all rounds
           *
           * For example:
           * ```javascript
           * [
           *     [ { ROLE_A: 'ID1', ROLE_B: 'ID2' }, ... ], // Round 1.
           *     [ { ROLE_A: [ 'ID1', 'ID2' ] }, ... ], // Round 2.
           *     ...
           * ]
           * ```
           *
           * @see Roler.rolifyAll
           * @see Roler.setRolifiedMatches
           */
          this.role2IdMatches = null;
  
          /**
           * ### Roler.id2RoleMatches
           *
           * Array of arrays of maps id to role for all matches in all rounds
           *
           * For example:
           * ```javascript
           * [
           *     [ { ID1: 'ROLE_A', ID2: 'ROLE_B' }, ... ], // Round 1.
           *     [ { ID1: 'ROLE_A', ID2: 'ROLE_A' }, ... ], // Round 2.
           *     ...
           * ]
           * ```
           *
           * @see Roler.rolifyAll
           * @see Roler.setRolifiedMatches
           */
          this.id2RoleMatches = null;
  
          /**
           * ### Roler.role2IdRoundMap
           *
           * Array of maps of role to id/s per each round
           *
           * For example:
           * ```javascript
           * [
           *     // Round 1.
           *     [ { ROLE_A: [ 'ID1', 'ID3', ... ], ROLE_B: 'ID2', ... } ],
           *     // Round 2.
           *     [ { ROLE_A: [ 'ID1', 'ID2', ... ], ROLE_B: 'ID3', ... } ],
           *     ...
           * ]
           * ```
           */
          this.role2IdRoundMap = [];
  
          /**
           * ### Roler.rolify
           *
           * Callback that assigns roles to a single match
           *
           * @see Roler.linearRolifier
           */
          this.rolify = Roler.linearRolifier;
  
          /**
           * ### Roler.missingId
           *
           * The id indicating a skipped match (i.e. a bye in a match)
           *
           * @see Matcher.missingId
           */
          this.missingId = 'bot';
      }