private Map<Member,String[]> inspectClass(Class<?> clazz){
  InputStream is=clazz.getResourceAsStream(ClassUtils.getClassFileName(clazz));
  if (is == null) {
    if (LOGGER.isDebugEnabled()) {
      LOGGER.debug("Cannot find '.class' file for class [" + clazz + "] - unable to determine constructors/methods parameter names");
    }
    return NO_DEBUG_INFO_MAP;
  }
  try {
    ClassReader classReader=new ClassReader(is);
    Map<Member,String[]> map=new ConcurrentHashMap<Member,String[]>();
    classReader.accept(new ParameterNameDiscoveringVisitor(clazz,map),false);
    return map;
  }
 catch (  IOException ex) {
    if (LOGGER.isDebugEnabled()) {
      LOGGER.debug("Exception thrown while reading '.class' file for class [" + clazz + "] - unable to determine constructors/methods parameter names",ex);
    }
  }
 finally {
    try {
      is.close();
    }
 catch (    IOException ex) {
    }
  }
  return NO_DEBUG_INFO_MAP;
}

private Map < Member , String [ ] > inspectClass ( Class < ? > clazz ) { InputStream is = clazz . getResourceAsStream ( ClassUtils . getClassFileName ( clazz ) ) ; if ( is == null ) { if ( LOGGER . isDebugEnabled ( ) ) { LOGGER . debug ( "Cannot find '.class' file for class [" + clazz + "] - unable to determine constructors/methods parameter names" ) ; } return NO_DEBUG_INFO_MAP ; } try { ClassReader classReader = new ClassReader ( is ) ; Map < Member , String [ ] > map = new ConcurrentHashMap < Member , String [ ] > ( ) ; classReader . accept ( new ParameterNameDiscoveringVisitor ( clazz , map ) , false ) ; return map ; } catch ( IOException ex ) { if ( LOGGER . isDebugEnabled ( ) ) { LOGGER . debug ( "Exception thrown while reading '.class' file for class [" + clazz + "] - unable to determine constructors/methods parameter names" , ex ) ; } } finally { try { is . close ( ) ; } catch ( IOException ex ) { } } return NO_DEBUG_INFO_MAP ; }
inspects the target class . exceptions will be logged and a maker map returned to indicate the lack of debug information .
