@Override public Class<?> typeForName(String name) { if (name.isEmpty()) return typeForInvalidName(name); Class<?> type = (Class<?>) typeToName.getKey(name); if (type != null) return type; int nameEnd = name.indexOf("[]"); if (nameEnd > 0) { int i; for (i = nameEnd + 2; i < name.length(); i += 2) { if (name.indexOf("[]", i) != i) return typeForInvalidName(name); } return ReflectionUtils.arrayClassFor( typeForName(name.substring(0, nameEnd)), (i - nameEnd) / 2); } if (ReflectionUtils.isBasicDataType(name)) return ReflectionUtils.getTypeFromAbbreviation(name); return typeForUnmappedName(name); }