private static Pair<JType, JClass> unpackArrayItemClass(JType arrayType) {
    if (!(arrayType instanceof JClass)) return null;

    JClass cls = (JClass)arrayType;
    JClass baseClass = cls.erasure();
    if (!baseClass.equals(arrayType.owner().ref(List.class)) && !baseClass.equals(arrayType.owner().ref(Set.class))) return null;

    List<JClass> parameters = cls.getTypeParameters();
    if (parameters == null || parameters.size() != 1) return null;

    return Pair.of(baseClass, parameters.get(0));
  }
private static Pair<JType, JClass> unpackArrayItemClass(JType arrayType)