code: func (p *Profile) Compatible(pb *Profile) error {
  	if !compatibleValueTypes(p.PeriodType, pb.PeriodType) {
  		return fmt.Errorf("incompatible period types %v and %v", p.PeriodType, pb.PeriodType)
  	}
  
  	if len(p.SampleType) != len(pb.SampleType) {
  		return fmt.Errorf("incompatible sample types %v and %v", p.SampleType, pb.SampleType)
  	}
  
  	for i := range p.SampleType {
  		if !compatibleValueTypes(p.SampleType[i], pb.SampleType[i]) {
  			return fmt.Errorf("incompatible sample types %v and %v", p.SampleType, pb.SampleType)
  		}
  	}
  
  	return nil
  }
docs: // Compatible determines if two profiles can be compared/merged.
  // returns nil if the profiles are compatible; otherwise an error with
  // details on the incompatibility.