@Override
    protected List<TestInfo> getChildren() {
        List<TestInfo> children = new ArrayList<>();

        TestPlanInfo lastPlan = null;
        for (TestPlanInfo planInfo : testPlans) {
            lastPlan = planInfo;
            planInfo.runner = new TestPlanRunner();

            List<TestGroupType> groups = planInfo.plan.getTestGroup();
            for (TestGroupType group : groups) {
                for (TestType test : group.getTest()) {
                    TestInfo testInfo = new TestInfo();
                    if (testPlans.size() > 1) {
                        testInfo.name = planInfo.name + " / " + test.getName();
                    } else {
                        testInfo.name = test.getName();
                    }
                    testInfo.plan = planInfo;
                    testInfo.group = group;
                    testInfo.test = test;
                    children.add(testInfo);
                }
            }
        }

        ManagerRestTestGatewayLog annotation = getTestClass().getJavaClass().getAnnotation(ManagerRestTestGatewayLog.class);
        if (annotation != null) {
            GatewayAssertionTestInfo gatewayTest = new GatewayAssertionTestInfo();
            gatewayTest.name = "Assert Gateway Log";
            gatewayTest.plan = lastPlan;
            gatewayTest.expectedLog = annotation.value();
            children.add(gatewayTest);
        }
        ManagerRestTestPublishPayload annotation2 = getTestClass().getJavaClass().getAnnotation(ManagerRestTestPublishPayload.class);
        if (annotation2 != null) {
            PublishPayloadTestInfo pubTest = new PublishPayloadTestInfo();
            pubTest.name = "Assert Publishing Payloads";
            pubTest.plan = lastPlan;
            pubTest.expectedPayloads = annotation2.value();
            children.add(pubTest);
        }
        return children;
    }
@see org.junit.runners.ParentRunner#getChildren()
manager/test/api/src/main/java/io/apiman/manager/test/junit/ManagerRestTester.java