public void walk(Handler handler) {
        walkSubtree(this.rootValidatable, new ConfigSaveValidationContext(null), handler);
    }
@Test
    public void shouldNotWalkPackageDefinitionWhileTraversingPackageMaterial() {
        PackageDefinition packageDefinition = mock(PackageDefinition.class);
        PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig("package-id");
        setField(packageMaterialConfig, "packageDefinition", packageDefinition);

        BasicCruiseConfig config = new BasicCruiseConfig();
        PackageRepository packageRepository = mock(PackageRepository.class);
        when(packageRepository.getPackages()).thenReturn(new Packages(packageDefinition));
        when(packageDefinition.getRepository()).thenReturn(packageRepository);
        when(packageRepository.doesPluginExist()).thenReturn(true);
        when(packageDefinition.getId()).thenReturn("package-id");
        config.getPackageRepositories().add(packageRepository);

        final ConfigSaveValidationContext context = new ConfigSaveValidationContext(config);

        new GoConfigGraphWalker(packageMaterialConfig).walk((validatable, ctx) -> validatable.validate(context));
        verify(packageDefinition, never()).validate(any(ValidationContext.class));
    }