in src/main/java/org/apache/commons/beanutils2/expression/DefaultResolver.java [208:240]
public String next(final String expression) {
if (expression == null || expression.isEmpty()) {
return null;
}
boolean indexed = false;
boolean mapped = false;
for (int i = 0; i < expression.length(); i++) {
final char c = expression.charAt(i);
if (indexed) {
if (c == INDEXED_END) {
return expression.substring(0, i + 1);
}
} else if (mapped) {
if (c == MAPPED_END) {
return expression.substring(0, i + 1);
}
} else {
switch (c) {
case NESTED:
return expression.substring(0, i);
case MAPPED_START:
mapped = true;
break;
case INDEXED_START:
indexed = true;
break;
default:
break;
}
}
}
return expression;
}