<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_pass(self, name, opt_pass, before=None, after=None):
 """Add an optimization pass to the optimizer. Optimization passes have a name that allows them to be enabled or disabled by name. By default all optimization passed are enabled and unordered. You can explicitly specify passes by name that this pass must run before or after this passs so that they can be properly ordered. Args: name (str):
 The name of the optimization pass to allow for enabling/disabling it by name opt_pass (OptimizationPass):
 The optimization pass class itself before (list(str)):
 A list of the passes that this pass should run before. after (list(str)):
 A list of the passes that this pass should run after. """


        if before is None:
            before = []
        if after is None:
            after = []

        self._known_passes[name] = (opt_pass, before, after)