/**
   * @param inTag
   * @param inVariable
   * @param inData
   * @return
   */
  public static Message createRequestMessage(
      int inTag,
      long inType,
      String inService,
      String inVariable,
      IPersistentMap<String, DataType<?>> inData) {

    RequestMessage.Builder builder = RequestMessage.newBuilder();
    builder.setTag(inTag);
    builder.setService(inService);

    if (inVariable != null) builder.setVariable(inVariable);

    if (inData != null) {
      DataMap.Builder dataMapBuilder = DataMap.newBuilder();
      parseMapValues(inData, dataMapBuilder);

      builder.setData(dataMapBuilder.build());
      builder.setType(inType);
    }

    Message.Builder messBuilder = Message.newBuilder();
    messBuilder.setType(Message.Type.RequestMessage);
    messBuilder.setRequestMessage(builder.build());

    return messBuilder.build();
  }