Лямбда, несколько forEach с кастингом

Нужна помощь в размышлениях о лямбдах от моих коллег-светил из StackOverflow.

Стандартный случай выбора списка из списка, чтобы собрать некоторых детей вглубь графика. Какие удивительные способы моглиLambdas помочь с этим образцом?

public List<ContextInfo> list() {
    final List<ContextInfo> list = new ArrayList<ContextInfo>();
    final StandardServer server = getServer();

    for (final Service service : server.findServices()) {
        if (service.getContainer() instanceof Engine) {
            final Engine engine = (Engine) service.getContainer();
            for (final Container possibleHost : engine.findChildren()) {
                if (possibleHost instanceof Host) {
                    final Host host = (Host) possibleHost;
                    for (final Container possibleContext : host.findChildren()) {
                        if (possibleContext instanceof Context) {
                            final Context context = (Context) possibleContext;
                            // copy to another object -- not the important part
                            final ContextInfo info = new ContextInfo(context.getPath());
                            info.setThisPart(context.getThisPart());
                            info.setNotImportant(context.getNotImportant());
                            list.add(info);
                        }
                    }
                }
            }
        }
    }
    return list;
}

Обратите внимание, что сам список отправляется клиенту какJSONтак что не зацикливайтесь на том, что возвращается. Должно быть несколько аккуратных способов, которыми я могу сократить петли.

Интересно посмотреть, что создают мои коллеги-эксперты. Рекомендуется несколько подходов.

РЕДАКТИРОВАТЬ

findServices и дваfindChildren методы возвращают массивы

РЕДАКТИРОВАТЬ - БОНУСНЫЙ ВЫЗОВ

«Не важная часть» оказалась важной. Мне действительно нужно скопировать значение, доступное только вhost пример. Это, кажется, разрушает все прекрасные примеры. Как можно продвинуть государство вперед?

final ContextInfo info = new ContextInfo(context.getPath());
info.setHostname(host.getName()); // The Bonus Challenge

Ответы на вопрос(4)

Ваш ответ на вопрос