title: How do I change the package name of classes inside a JAR?
body: <p>Typical problem - I have <code>x-1.0.jar</code>, <code>x-2.0.jar</code> and <code>y-1.0.jar</code>. I want to use <code>x-2.0.jar</code> and <code>y-1.0.jar</code> but <code>y-1.0.jar</code> depends on <code>x-1.0.jar</code>.</p>
  
  <p>There is a tool out there which allows you to bundle up dependencies into a single JAR and change the package names internally so it avoids conflict. For example, if "x" contains software in the package "com.foo", then it can change all classes in <code>x-1.0.jar</code> to be in package "old.com.foo", as well as any references in <code>y-1.0.jar</code>, so we could make a new JAR <code>xy-1.0.jar</code>; this JAR would not contain any publicly-exposed classes in the "com.foo" packages, so that we could feel free to use it alongside <code>x-2.0.jar</code> with no conflict.</p>
  
  <p>The problem is, I have totally forgotten what the name of that tool is! We considered using it once in my company, but my management were concerned about doing binary-level modifications to classes. However now (several years later) we have a similar problem which only affects test code, so I want to propose it again. But I have totally forgotten the name!</p>
  
  <p>Things I remember about it:</p>
  
  <ul>
  <li>Open source hosted on Google Code</li>
  <li>Based on ObjectWeb ASM underneath</li>
  <li>I think the name may have been a pun of some description</li>
  </ul>
  
  <p>Does anyone know what tool this might be? Please help me out!</p>