- } catch (ClassNotFoundException e) {
- String[] components = name.split("\\.");
- String potentialOuter;
- int length = components.length;
- if (length > 2 && (potentialOuter = components[length - 2]) != null && Character.isUpperCase(potentialOuter.charAt(0))) {
- String outerName = Joiner.on(".").join(Arrays.asList(components).subList(0, length - 1));
- String innerName = outerName + "$" + components[length-1];
+ } catch (final ClassNotFoundException e) {
+ final List<String> components = DOT_SPLITTER.splitToList(name);
+
+ if (isInnerClass(components)) {
+ final int length = components.size() - 1;
+ final String outerName = Joiner.on(".").join(components.subList(0, length));
+ final String innerName = outerName + "$" + components.get(length);