public void process(File cFile) {
		boolean modified = false;
		try {
			String cName = ClassNameFinder.thisClass(BinaryFile.read(cFile));
			if (!cName.contains("."))
				return; // Ignore unpackaged classes
			ClassPool cPool = ClassPool.getDefault();
			CtClass ctClass = cPool.get(cName);
			for (CtMethod method : ctClass.getDeclaredMethods()) {
				MethodInfo mi = method.getMethodInfo();
				AnnotationsAttribute attr = (AnnotationsAttribute) mi
						.getAttribute(AnnotationsAttribute.visibleTag);
				if (attr == null)
					continue;
				for (javassist.bytecode.annotation.Annotation ann : attr
						.getAnnotations()) {
					if (ann.getTypeName().startsWith("net.mindview.atunit")) {
						print(ctClass.getName() + " Method: " + mi.getName()
								+ " " + ann);
						if (remove) {
							ctClass.removeMethod(method);
							modified = true;
						}
					}
				}
			}
			// Fields are not removed in this version (see text).
			if (modified)
				ctClass.toBytecode(new DataOutputStream(new FileOutputStream(
						cFile)));
			ctClass.detach();
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}