Найти класс по описанию

Описание класса:
1. Реализует интерфейс List;
2. Является приватным статическим классом внутри популярного утилитного класса;
3. Доступ по индексу запрещен — кидается исключение IndexOutOfBoundsException.
Используя рефлекшн (метод getDeclaredClasses), верни подходящий тип в методе getExpectedClass.

Требования:
1. Метод getExpectedClass должен использовать метод getDeclaredClasses подходящего утилитного класса.
2. Метод getExpectedClass должен вернуть правильный тип.
3. Метод main должен вызывать метод getExpectedClass.
4. Метод main должен вывести полученный класс на экран.
package com.javarush.task.task36.task3602;

import java.lang.reflect.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

/*
Найти класс по описанию
*/
public class Solution {
    public static void main(String[] args) {
        System.out.println(getExpectedClass());
    }

    public static Class getExpectedClass() {
        Class[] classes = Collections.class.getDeclaredClasses();

        for (Class clazz : classes) {
            if (
                    List.class.isAssignableFrom(clazz) &&
                    Modifier.isPrivate(clazz.getModifiers()) &&
                    Modifier.isStatic(clazz.getModifiers())
            ) {
                Method method = Arrays
                        .stream(clazz.getDeclaredMethods())
                        .filter(item ->
                                Objects.equals("get", item.getName()) &&
                                item.getParameterCount() == 1 &&
                                Objects.equals(item.getParameterTypes()[0].getSimpleName(), "int")
                        )
                        .findFirst()
                        .orElse(null);

                if (method != null) {
                    try {
                        Constructor constructor = clazz.getDeclaredConstructor();
                        constructor.setAccessible(true);
                        method.setAccessible(true);
                        method.invoke(constructor.newInstance(), 0);
                    } catch (IndexOutOfBoundsException exception) {
                        return clazz;
                    } catch (InvocationTargetException exception) {
                        if (Objects.equals(
                                "IndexOutOfBoundsException",
                                exception.getCause().getClass().getSimpleName()
                        )) {
                            return clazz;
                        }
                    } catch (Exception ignored) {}
                }
            }
        }

        return null;
    }
}
Чтобы задача была принята, достаточно в холостую вызвать метод getDeclaredClasses, а потом сразу вернуть нужный класс без поиска. Я же решил потренироваться в Reflection и начал честно искать нужный класс. Все было более-менее хорошо, пока не остановился на вызове метода. Как видно из написанного, там я выкопал целый огород (строки 37-51). Можно ли это безобразие переделать? Я пробовал вместо строк 40-41 писать:
constructor.newInstance().get(0)
Тогда не нужно даже отлавливать InvocationTargetException и делать внутри проверку на причину, соответственно. Но этот способ тоже мне кажется сомнительным. Обращаюсь к тем, кто хорошо разбирается в Java Reflection API за советом, можно ли сделать это как-то изящнее?