docs: public static Object getListener(Object bag, int index)
      {
          if (index == 0) {
              if (bag == null)
                  return null;
              if (!(bag instanceof Object[]))
                  return bag;
              Object[] array = (Object[])bag;
              // bag has at least 2 elements if it is array
              if (array.length < 2) throw new IllegalArgumentException();
              return array[0];
          } else if (index == 1) {
              if (!(bag instanceof Object[])) {
                  if (bag == null) throw new IllegalArgumentException();
                  return null;
              }
              Object[] array = (Object[])bag;
              // the array access will check for index on its own
              return array[1];
          } else {
              // bag has to array
              Object[] array = (Object[])bag;
              int L = array.length;
              if (L < 2) throw new IllegalArgumentException();
              if (index == L)
                  return null;
              return array[index];
          }
      }