package mccoyst;

import java.io.*;
import java.util.*;

import org.objectweb.asm.*;

public class App{
    public static void main(String[] args) throws Exception{
		if(args.length < 2){
			System.err.println("I need the names of two class files.");
			System.exit(1);
		}

		InputStream a = new FileInputStream(args[0]);
		MethodCollector ma = new MethodCollector();
		InputStream b = new FileInputStream(args[1]);
		MethodCollector mb = new MethodCollector();

		try{
			ClassReader cra = new ClassReader(a);
			cra.accept(ma, 0);

			ClassReader crb = new ClassReader(b);
			crb.accept(mb, 0);
		}finally{
			a.close();
			b.close();
		}

		List<Method> newer = new ArrayList<Method>();
		for(Method m : mb.methods){
			if(!ma.methods.contains(m)){
				newer.add(m);
			}
		}

		for(Method m : newer){
			System.out.println(m);
		}
    }
}

@@ -642,51 +642,39 @@
 %0A%0A%09%09
-List%3CMethod%3E newer = new ArrayList%3CM
+mb.methods.removeAll(ma.m
 ethod
-%3E(
+s
 );%0A%09
@@ -706,93 +706,8 @@
 s)%7B%0A
-%09%09%09if(!ma.methods.contains(m))%7B%0A%09%09%09%09newer.add(m);%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09for(Method m : newer)%7B%0A
 %09%09%09S

Use Set.removeAll instead my own loop.