code: func (b *Builder) Do() *Result {
  	r := b.visitorResult()
  	r.mapper = b.Mapper()
  	if r.err != nil {
  		return r
  	}
  	if b.flatten {
  		r.visitor = NewFlattenListVisitor(r.visitor, b.objectTyper, b.mapper)
  	}
  	helpers := []VisitorFunc{}
  	if b.defaultNamespace {
  		helpers = append(helpers, SetNamespace(b.namespace))
  	}
  	if b.requireNamespace {
  		helpers = append(helpers, RequireNamespace(b.namespace))
  	}
  	helpers = append(helpers, FilterNamespace)
  	if b.requireObject {
  		helpers = append(helpers, RetrieveLazy)
  	}
  	if b.continueOnError {
  		r.visitor = NewDecoratedVisitor(ContinueOnErrorVisitor{r.visitor}, helpers...)
  	} else {
  		r.visitor = NewDecoratedVisitor(r.visitor, helpers...)
  	}
  	return r
  }
docs: // Do returns a Result object with a Visitor for the resources identified by the Builder.
  // The visitor will respect the error behavior specified by ContinueOnError. Note that stream
  // inputs are consumed by the first execution - use Infos() or Object() on the Result to capture a list
  // for further iteration.