private StackTraceElement getLibraryClassElement(StackTraceElement elem) {
		try {
			Class<?> clazz = Class.forName(elem.getClassName());
			if (clazz.getAnnotation(SafeChainWrapper.class) != null) {
				return new StackTraceElement(elem.getClassName(), "", elem.getClassName() + ".java", -1);
			}
			//elem.getMethodName()
			//clazz.getMethod(name, parameterTypes)

			for(Class<?> c = clazz;  !Object.class.equals(c); c = c.getSuperclass()) {
				for (Method m : clazz.getDeclaredMethods()) {
					if (m.getAnnotation(SafeChainWrapper.class) != null) {
						return new StackTraceElement(elem.getClassName(), m.getName(), elem.getClassName() + ".java", -1);
					}
				}
			}
		} catch (ClassNotFoundException e) {
			throw new IllegalStateException(e);
		}
		return null;
	}