code: func (a *AttributeDefinition) Walk(walker func(*AttributeDefinition) error) error {
  	return walk(a, walker, make(map[string]bool))
  }
docs: // Walk traverses the data structure recursively and calls the given function once
  // on each attribute starting with the attribute returned by Definition.