public ClassNode[] getInheritors(MethodID id) {
		ClassNode c = getClass(id.owner);

		List<ClassNode> inheritors = new LinkedList<ClassNode>();
		classLoop: for (ClassNode c2 : getClasses().values()) {
			ClassNode[] inherited = (c.access & ACC_INTERFACE) == 0 ? getHierarchy(c2)
					: getInterfaces(c2);
			int index = ArrayUtil.searchArray(inherited, c);
			if (index >= 0) {
				for (Object mo : c2.methods) {
					MethodNode m2 = (MethodNode) mo;
					if (m2.name.equals(id.name) && m2.desc.equals(id.desc)
							&& !inheritors.contains(c2)) {
						inheritors.add(c2);
						continue classLoop;
					}
				}
			}
		}
		return inheritors.toArray(new ClassNode[0]);
	}