public static /*Executable*/ Member lookupMethod(ExtendedStackTraceElement ste) { if (ste.getDeclaringClass() == null) return null; if (ste.getMethod() != null) return ste.getMethod(); for (final Method m : ste.getDeclaringClass().getDeclaredMethods()) { if (m.getName().equals(ste.getMethodName())) { final Instrumented i = getAnnotation(m, Instrumented.class); if (m.isSynthetic() || isWaiver(m.getDeclaringClass().getName(), m.getName()) || i != null && ste.getLineNumber() >= i.methodStart() && ste.getLineNumber() <= i.methodEnd()) return m; } } return null; }
protected /*Executable*/ Member getMethod(final ExtendedStackTraceElement este) { if (este.getDeclaringClass() == null) return null; Member[] ms = getMethods(este.getDeclaringClass()); Member method = null; try { final AtomicReference<String> descriptor = new AtomicReference<>(); ASMUtil.accept(este.getDeclaringClass(), ClassReader.SKIP_FRAMES, new ClassVisitor(Opcodes.ASM5) { @Override public MethodVisitor visitMethod(int access, String name, final String desc, String signature, String[] exceptions) {
if (fromUncaughtExc && st.get().length > 0 && st.get()[0] != null) { final ExtendedStackTraceElement first = st.get()[0]; if (!first.getDeclaringClass().equals(ClassCastException.class) && !(first.getDeclaringClass().equals(NullPointerException.class) && first.getDeclaringClass().getName().startsWith("co.paralleluniverse.fibers"))) return true; final Class<?> clazz = ste.getDeclaringClass(); final boolean classInstrumented = SuspendableHelper.isInstrumented(clazz); final /*Executable*/ Member m = SuspendableHelper.lookupMethod(ste);