code: def parse_branchset(self, branchset_node, depth, number, validate):
          
          uncertainty_type = branchset_node.attrib.get('uncertaintyType')
          filters = dict((filtername, branchset_node.attrib.get(filtername))
                         for filtername in self.FILTERS
                         if filtername in branchset_node.attrib)
          if validate:
              self.validate_filters(branchset_node, uncertainty_type, filters)
          filters = self.parse_filters(branchset_node, uncertainty_type, filters)
          branchset = BranchSet(uncertainty_type, filters)
          if validate:
              self.validate_branchset(branchset_node, depth, number, branchset)
          return branchset
docs: Create :class:`BranchSet` object using data in ``branchset_node``.
  
          :param branchset_node:
              ``etree.Element`` object with tag "logicTreeBranchSet".
          :param depth:
              The sequential number of branchset's branching level, based on 0.
          :param number:
              Index number of this branchset inside branching level, based on 0.
          :param validate:
              Whether or not filters defined in branchset and the branchset
              itself should be validated.
          :returns:
              An instance of :class:`BranchSet` with filters applied but with
              no branches (they're attached in :meth:`parse_branches`).