code: func (c *cluster) loadTopology() error {
  	buf, err := ioutil.ReadFile(filepath.Join(c.Path, ".topology"))
  	if os.IsNotExist(err) {
  		c.Topology = newTopology()
  		return nil
  	} else if err != nil {
  		return errors.Wrap(err, "reading file")
  	}
  
  	var pb internal.Topology
  	if err := proto.Unmarshal(buf, &pb); err != nil {
  		return errors.Wrap(err, "unmarshalling")
  	}
  	top, err := decodeTopology(&pb)
  	if err != nil {
  		return errors.Wrap(err, "decoding")
  	}
  	c.Topology = top
  
  	return nil
  }
docs: // loadTopology reads the topology for the node. unprotected.