// though BindingResolver may be held on to (eg, {@link GinjectorBindings}, we won't leak
// memory used for temporary storage during resolution.
DependencyExplorerOutput output = explorerFactory.create(branch).explore(origin);
UnresolvedBindingValidator validator = validatorFactory.create(branch);
InvalidKeys invalidKeys = validator.getInvalidKeys(output);
if (validator.validate(output, invalidKeys)) {
validator.pruneInvalidOptional(output, invalidKeys);
installerFactory.create(branch).installBindings(output);
}
}