code: func (c *memoryClient) addToStreams(s *rawpresentation.Streams, anno *miloProto.Step) error {
  	if lds := anno.StdoutStream; lds != nil {
  		if err := c.addLogDogTextStream(s, lds); err != nil {
  			return fmt.Errorf(
  				"Encountered error while processing step streams for STDOUT: %s", err)
  		}
  	}
  	if lds := anno.StderrStream; lds != nil {
  		if err := c.addLogDogTextStream(s, lds); err != nil {
  			return fmt.Errorf(
  				"Encountered error while processing step streams for STDERR: %s", err)
  		}
  	}
  
  	// Look for substream.
  	for _, link := range anno.GetOtherLinks() {
  		lds := link.GetLogdogStream()
  		// Not a logdog stream.
  		if lds == nil {
  			continue
  		}
  
  		if err := c.addLogDogTextStream(s, lds); err != nil {
  			return fmt.Errorf(
  				"Encountered error while processing step streams for '%s'\n%s", lds.Name, err)
  		}
  	}
  
  	// Now do substeps.
  	for _, subStepEntry := range anno.Substep {
  		substep := subStepEntry.GetStep()
  		if substep == nil {
  			continue
  		}
  
  		if err := c.addToStreams(s, substep); err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // addToStreams adds the set of stream with a given base path to the logdog
  // stream map.  A base path is assumed to have a stream named "annotations".