in src/main/java/org/apache/commons/jexl3/internal/ArrayBuilder.java [88:121]
public void add(final Object value) {
// for all children after first...
if (!Object.class.equals(commonClass)) {
if (value == null) {
isNumber = false;
unboxing = false;
} else {
Class<?> eclass = value.getClass();
// base common class on first non-null entry
if (commonClass == null) {
commonClass = eclass;
isNumber = isNumber && Number.class.isAssignableFrom(commonClass);
} else if (!commonClass.equals(eclass)) {
// if both are numbers...
if (isNumber && Number.class.isAssignableFrom(eclass)) {
commonClass = Number.class;
} else {
// attempt to find valid superclass
do {
eclass = eclass.getSuperclass();
if (eclass == null) {
commonClass = Object.class;
break;
}
} while (!commonClass.isAssignableFrom(eclass));
}
}
}
}
if (added >= untyped.length) {
throw new IllegalArgumentException("add() over size");
}
untyped[added++] = value;
}