private boolean isPotentialCallbackMethod(SootClass currentClass, String methodName)
    {
    	boolean existCurrentMethod = false;
    	List<SootMethod> currentMethods = currentClass.getMethods();
		for (SootMethod method : currentMethods)
		{
			if (method.getName().equals(methodName))
			{
				existCurrentMethod = true;
				break;
			}
		}
		
		if (! existCurrentMethod)
		{
			throw new RuntimeException(methodName + " is not belong to class " + currentClass.getName());
		}
    	
    	List<SootClass> extendedClasses = Scene.v().getActiveHierarchy().getSuperclassesOf(currentClass);
		for(SootClass sc : extendedClasses)
		{
			List<SootMethod> methods = sc.getMethods();
			for (SootMethod method : methods)
			{
				if (method.getName().equals(methodName))
				{
					return true;
				}
			}
		}
		
		Chain<SootClass> interfaces = currentClass.getInterfaces();
    	for (SootClass i : interfaces)
    	{
    		List<SootMethod> methods = i.getMethods();
			for (SootMethod method : methods)
			{
				if (method.getName().equals(methodName))
				{
					return true;
				}
			}
    	}
		
    	
    	return false;
    }