Edit Review Improvements/New filters for edit review/How to implement a filter

Product and design
There are first some product and design questions to answer:
 * Purpose and effect of the filter - Consider the user experience and use cases. This will both help you decide what the filter does, and how to describe it.
 * Choose text - You will need a label and description, which will be placed as shown in the image. You will also need a group title if you are creating a new group; you can also optionally specify What's This? text to provide more information about the group.

Listener
Register a listener for the ChangesListSpecialPageStructuredFilters hook. That will give you access to, a ChangesListSpecialPage instance used below.

Group
First, choose whether you want to create a ChangesListStringOptionsGroup or a ChangesListBooleanFilterGroup. ChangesListStringOptionsGroup is best if you have many options, they are not naturally expressed as hide-based (e.g. hideanons) filters, and/or they are not full coverage (full coverage means checking all boxes in a group is the same as checking no boxes). ChangesListBooleanFilterGroup is best for existing hide-based filters (like hideanons), or filters that can be expressed simply using that idea.

If you are creating a new group, create an object for that. The 'name' is an internal identifier. However, for, it's also used as the URL parameter. Either (see above): or: You can optionally include information for a What's This? popup (, ,  , and  ). If you need to access an existing group (e.g. defined by core), use:

Filters
Regardless of whether you created a group, you can now put filters in new or existing groups (you can alternatively put them in the  parameter of the group constructor; not shown). There are currently two types, ChangesListBooleanFilter and ChangesListStringOptionsFilter. They each go only in the group with the matching type. The 'name' is used as an identifier, which also appears in the URL. Use: