code: private Map<CtClass, Set<CtMethod>> find(final CtMethod declaredMethod, final int level, final Map<CtClass, Set<CtMethod>> dict) {
  		if (level < 0) {
  			throw new IllegalArgumentException("level < 0");
  		}
  		addToMap(declaredMethod.getDeclaringClass(), declaredMethod, dict);
  		if (level > 0) {
  			try {
  				declaredMethod.instrument(new ExprEditor() {
  					@Override
  					public void edit(final MethodCall m) throws CannotCompileException {
  						try {
  							CtMethod method = m.getMethod();
  							LOG.info(method.getLongName() + " / " + level);
  							find(method, level - 1, dict);
  						} catch (NotFoundException e) {
  							e.printStackTrace(); // should not happen
  						}
  						super.edit(m);
  					}
  
  				});
  			} catch (CannotCompileException e) {
  				// cannot possibly be thrown due to the fact that we don't change anything here
  				e.printStackTrace();
  			}
  		}
  		return dict;
  	}
docs: Recursive helper function to find subsequent method calls of the given method. Uses "dict" as storage for method call during recursion, storing all
  called {@link CtMethod} objects in it.