def METHOD_NAME(self):
    class TreeNodeSubclass(TreeNode):
        pass
    trees = [
        TreeNode.read(io.StringIO("((a,b),(c,d),(e,f));")),
        TreeNode.read(io.StringIO("(a,(c,d),b,(e,f));")),
        TreeNode.read(io.StringIO("((c,d),(e,f),b);")),
        TreeNode.read(io.StringIO("(a,(c,d),(e,f));"))]
    trees = majority_rule(trees, tree_node_class=TreeNodeSubclass)
    self.assertEqual(len(trees), 4)
    for tree in trees:
        self.assertIs(type(tree), TreeNodeSubclass)
    exp = set([
              frozenset(['a']),
              frozenset(['b']),
              frozenset([None, 'c', 'd']),
              frozenset([None, 'e', 'f'])])
    obs = set([frozenset([n.name for n in t.traverse()]) for t in trees])
    self.assertEqual(obs, exp)