private static void transform(final MethodEditor method) {
		if (CounterDecorate.VERBOSE > 1) {
			System.out.println("Decorating method " + method);
		}

		final MemberRef rcfield = new MemberRef(Type
				.getType(CounterDecorate.COUNTER_MAIN), new NameAndType(
				CounterDecorate.COUNTER_RCNAME, Type
						.getType(CounterDecorate.COUNTER_TYPE)));
		final MemberRef aufield = new MemberRef(Type
				.getType(CounterDecorate.COUNTER_MAIN), new NameAndType(
				CounterDecorate.COUNTER_AUNAME, Type
						.getType(CounterDecorate.COUNTER_TYPE)));
		final MemberRef sufield = new MemberRef(Type
				.getType(CounterDecorate.COUNTER_MAIN), new NameAndType(
				CounterDecorate.COUNTER_SUNAME, Type
						.getType(CounterDecorate.COUNTER_TYPE)));

		final ListIterator iter = method.code().listIterator();

		while (iter.hasNext()) {
			final Object ce = iter.next();

			if (CounterDecorate.VERBOSE > 2) {
				System.out.println("Examining " + ce);
			}

			if (ce instanceof Instruction) {
				final Instruction inst = (Instruction) ce;

				if (inst.opcodeClass() == Opcode.opcx_aupdate) {
					iter.remove();
					iter.add(new Instruction(Opcode.opcx_getstatic, aufield));
					iter.next();
					iter.add(new Instruction(Opcode.opcx_ldc, new Integer(1)));
					iter.next();
					iter.add(new Instruction(Opcode.opcx_iadd));
					iter.next();
					iter.add(new Instruction(Opcode.opcx_putstatic, aufield));
					iter.next();
				}
				if (inst.opcodeClass() == Opcode.opcx_supdate) {
					iter.remove();
					iter.add(new Instruction(Opcode.opcx_getstatic, sufield));
					iter.next();
					iter.add(new Instruction(Opcode.opcx_ldc, new Integer(1)));
					iter.next();
					iter.add(new Instruction(Opcode.opcx_iadd));
					iter.next();
					iter.add(new Instruction(Opcode.opcx_putstatic, sufield));
					iter.next();
				} else if (inst.opcodeClass() == Opcode.opcx_rc) {
					iter.remove();
					iter.add(new Instruction(Opcode.opcx_getstatic, rcfield));
					iter.next();
					iter.add(new Instruction(Opcode.opcx_ldc, new Integer(1)));
					iter.next();
					iter.add(new Instruction(Opcode.opcx_iadd));
					iter.next();
					iter.add(new Instruction(Opcode.opcx_putstatic, rcfield));
					iter.next();
				}
			}
		}
	}