When I tried to calculate the median of the age field in a table with 120 million rows, I implemented a custom UDAF. However, there was a significant performance difference between the two different types of accumulator. The ListView stated that it would enable the state backend when encountering large amounts of data. How can I observe this process and which classes are responsible for these functions? ```java
public static class State implements Serializable { public int scale = 2; @DataTypeHint(value = "ARRAY<DOUBLE>") public ArrayList<Double> numbers; public State() {} } @Override public State createAccumulator() { State state = new State(); state.numbers = new ArrayList<>(); return state; } ```java public static class State implements Serializable { public int scale = 2; public ListView<Double> numbers; public State() {} } @Override public State createAccumulator() { State state = new State(); state.numbers = new ListView<>(); return state; }