private static void inline(final BloatContext context) {

		final Set liveMethods = new TreeSet(new MemberRefComparator());
		final CallGraph cg = context.getCallGraph();
		liveMethods.addAll(cg.liveMethods());

		BloatBenchmark.tr("Inlining " + liveMethods.size() + " live methods");

		if (BloatBenchmark.CALLEE_SIZE != -1) {
			Inline.CALLEE_SIZE = BloatBenchmark.CALLEE_SIZE;
		}

		final Iterator iter = liveMethods.iterator();
		for (int count = 0; BloatBenchmark.INLINE && iter.hasNext(); count++) {
			try {
				final MethodEditor live = context.editMethod((MemberRef) iter
						.next());

				if (context.ignoreMethod(live.memberRef())) {
					// Don't display ignored methods, it's misleading.
					continue;
				}

				BloatBenchmark.tr("  " + count + ") "
						+ live.declaringClass().name() + "." + live.name()
						+ live.type());

				final Inline inline = new Inline(context, BloatBenchmark.SIZE);
				inline.setMaxCallDepth(BloatBenchmark.DEPTH);
				inline.inline(live);

				// Commit here in an attempt to conserve memory
				context.commit(live.methodInfo());
				context.release(live.methodInfo());

			} catch (final NoSuchMethodException ex3) {
				BloatBenchmark.err.println("** Could not find method "
						+ ex3.getMessage());
				System.exit(1);
			}
		}
	}