public boolean merge(final Subroutine subroutine) throws AnalyzerException {
		boolean changes = false;
		for (int i = 0; i < access.length; ++i) {
			if (subroutine.access[i] && !access[i]) {
				access[i] = true;
				changes = true;
			}
		}
		if (subroutine.start == start) {
			for (int i = 0; i < subroutine.callers.size(); ++i) {
				Object caller = subroutine.callers.get(i);
				if (!callers.contains(caller)) {
					callers.add(caller);
					changes = true;
				}
			}
		}
		return changes;
	}