private void performWhere() {
		final int size = methodStack.size();
		for (int i = 1; i <= size; ++i) {
			final Method method = methodStack.get(size - i);
			final String caller = method.declaringType().name();
			try {
				final String sourceName = method.location().sourceName();
				final Location curLoc = curThread.frame(0).location();
				if (i == 1 && method.equals(curLoc.method())) {
					// current location
					final int line = curLoc.lineNumber();
					print(TRACE_LOC, i, caller, method.name(), sourceName, line);
				} else {
					// TODO trace should always include line number
					print(TRACE_SRC, i, caller, method.name(), sourceName);
				}
			} catch (AbsentInformationException
					| IncompatibleThreadStateException e) {
				print(TRACE, i, caller, method.name());
			}
		}
	}