code: func Lookup(ns Symbol, path ...string) Symbol {
  	cur := ns
  	for _, p := range path {
  		var next Symbol
  		if strct, _ := cur.(*Struct); strct != nil {
  			for _, sym := range strct.symbols {
  				if sym.Name() == p {
  					next = sym
  					break
  				}
  			}
  		}
  		if next == nil {
  			return newBrokenSymbol(p)
  		}
  		cur = next
  	}
  	return cur
  }
docs: // Lookup essentially does "ns.p0.p1.p2" operation.
  //
  // Returns a broken symbol if this lookup is not possible, e.g. some field path
  // element is not a struct or doesn't exist at all.