public JavaType findTypeByName(String typeName)
public JavaType findTypeByName(String fullTypeName)
    public JavaType findTypeByName(String typeName)    {        JavaType type = (JavaType) nameTypeMap.get(typeName);        if (type != null)        {            return type;        }        final Matcher matcher = PRIMITIVE_PATTERN.matcher(typeName);        if (matcher.matches())        {            final String basicType = matcher.group(1);            final String arrayBrackets = matcher.group(2);            final int dimension = arrayBrackets == null ? 0 : arrayBrackets.length() / 2;            JavaType primitive = new PrimitiveType(basicType, dimension);            nameTypeMap.put(typeName, primitive);            return primitive;         }        String resourceName = typeName.replace('.', '/') + ".class";        InputStream is = classLoader.getResourceAsStream(resourceName);        if (is == null)        {            String clDetails;            if (classLoader instanceof URLClassLoader)            {                URLClassLoader ucl = (URLClassLoader) classLoader;                clDetails = String.valueOf(Arrays.asList(ucl.getURLs()));            }            else            {                clDetails = String.valueOf(classLoader);            }            throw new IllegalArgumentException("Type " + typeName + " is unknown in classLoader " + clDetails);        }        try        {            return readJavaTypeFromStream(is);        }        catch (IOException ex)        {            throw new IllegalStateException();        }        finally        {            try            {                is.close();            }            catch (IOException e)            {            }        }    }