code: public GelfMessage build() {
          if (message == null) {
              throw new IllegalArgumentException("message must not be null!");
          }
  
          if (host == null || host.trim().isEmpty()) {
              throw new IllegalArgumentException("host must not be null or empty!");
          }
  
          if (version == null) {
              throw new IllegalArgumentException("version must not be null!");
          }
  
          final GelfMessage gelfMessage = new GelfMessage(message, host, version);
  
          gelfMessage.setLevel(level);
  
          if (fullMessage != null) {
              gelfMessage.setFullMessage(fullMessage);
          }
  
          if (timestamp != null) {
              gelfMessage.setTimestamp(timestamp);
          }
  
          gelfMessage.addAdditionalFields(fields);
  
          return gelfMessage;
      }
docs: Build a new {@link GelfMessage} with all information from the {@link GelfMessageBuilder}.
  
  @return a new {@link GelfMessage} instance.
  @throws IllegalArgumentException if any mandatory information is missing.