code: protected Map<String, String> getElementAttributes() {
          // Preserve order of attributes
          Map<String, String> attrs = new HashMap<>();
  
          if (this.getAction() != null) {
              attrs.put("action", this.getAction().toString());
          }
          if (this.getMethod() != null) {
              attrs.put("method", this.getMethod().toString());
          }
          if (this.getTimeout() != null) {
              attrs.put("timeout", this.getTimeout().toString());
          }
          if (this.getFinishOnKey() != null) {
              attrs.put("finishOnKey", this.getFinishOnKey());
          }
          if (this.getMaxLength() != null) {
              attrs.put("maxLength", this.getMaxLength().toString());
          }
          if (this.isPlayBeep() != null) {
              attrs.put("playBeep", this.isPlayBeep().toString());
          }
          if (this.getTrim() != null) {
              attrs.put("trim", this.getTrim().toString());
          }
          if (this.getRecordingStatusCallback() != null) {
              attrs.put("recordingStatusCallback", this.getRecordingStatusCallback().toString());
          }
          if (this.getRecordingStatusCallbackMethod() != null) {
              attrs.put("recordingStatusCallbackMethod", this.getRecordingStatusCallbackMethod().toString());
          }
          if (this.getRecordingStatusCallbackEvents() != null) {
              attrs.put("recordingStatusCallbackEvent", this.getRecordingStatusCallbackEventsAsString());
          }
          if (this.isTranscribe() != null) {
              attrs.put("transcribe", this.isTranscribe().toString());
          }
          if (this.getTranscribeCallback() != null) {
              attrs.put("transcribeCallback", this.getTranscribeCallback().toString());
          }
  
          return attrs;
      }
docs: Attributes to set on the generated XML element
  
  @return A Map of attribute keys to values