code: func (pc *ProtoClient) buildProtosFromDescriptor(descriptorArray []*protobuf.FileDescriptorProto) error {
  
  	descriptorsMap := make(map[string]*desc.MessageDescriptor)
  
  	descriptors, err := desc.CreateFileDescriptors(descriptorArray)
  	if err != nil {
  		return err
  	}
  
  	for name := range pc.descriptorsNames {
  		for _, v := range descriptors {
  			message := v.FindMessage(name)
  			if message != nil {
  				descriptorsMap[name] = message
  			}
  		}
  	}
  
  	for name, cmd := range pc.info.Commands {
  		if msg, ok := descriptorsMap[cmd.input]; ok {
  			pc.info.Commands[name].inputMsgDescriptor = msg
  		}
  		if msg, ok := descriptorsMap[cmd.output]; ok {
  			pc.info.Commands[name].outputMsgDescriptor = msg
  		}
  	}
  
  	return nil
  }
docs: // Receive an array of descriptors in binary format. The function creates the
  // protobuffer from this data and associates it to the message.