code: def binary_shader_for_rules(self, output_jar, jar, rules, jvm_options=None):
      
      with self.temporary_rules_file(rules) as rules_file:
        logger.debug('Running jarjar with rules:\n{}'.format(' '.join(rule.render() for rule in rules)))
        yield self._executor.runner(classpath=self._jarjar_classpath,
                                    main='org.pantsbuild.jarjar.Main',
                                    jvm_options=jvm_options,
                                    args=['process', rules_file, jar, output_jar])
docs: Yields an `Executor.Runner` that will perform shading of the binary `jar` when `run()`.
  
      No default rules are applied; only the rules passed in as a parameter will be used.
  
      :param unicode output_jar: The path to dump the shaded jar to; will be over-written if it
                                 exists.
      :param unicode jar: The path to the jar file to shade.
      :param list rules: The rules to apply for shading.
      :param list jvm_options: an optional sequence of options for the underlying jvm
      :returns: An `Executor.Runner` that can be `run()` to shade the given `jar`.
      :rtype: :class:`pants.java.executor.Executor.Runner`