code: func (pp *primitiveParser) visitStruct(reachable map[string]*data, k string, visible bool) {
  	if _, ok := reachable[k]; ok { // already included
  		return
  	}
  
  	s := pp.structmap[k]
  
  	d := data{
  		Name: k,
  		Byte: pp.typedecls[pp.fset.Position(s.Pos()).Line],
  	}
  	d.Immutable, d.Version, d.Fields = pp.gatherFields(reachable, s, visible)
  	d.Visible = visible || d.Immutable
  
  	sort.Sort(sortFields(d.Fields))
  	reachable[k] = &d
  }
docs: // visitStruct inspects the struct with the given name, parsing out its
  // field definitions and mutability state.