code: public Form createAnswerForm() {
          if (!isFormType()) {
              throw new IllegalStateException("Only forms of type \"form\" could be answered");
          }
          // Create a new Form
          Form form = new Form(DataForm.Type.submit);
          for (FormField field : getFields()) {
              // Add to the new form any type of field that includes a variable.
              // Note: The fields of type FIXED are the only ones that don't specify a variable
              if (field.getVariable() != null) {
                  FormField newField = new FormField(field.getVariable());
                  newField.setType(field.getType());
                  form.addField(newField);
                  // Set the answer ONLY to the hidden fields
                  if (field.getType() == FormField.Type.hidden) {
                      // Since a hidden field could have many values we need to collect them
                      // in a list
                      List<CharSequence> values = new ArrayList<>();
                      values.addAll(field.getValues());
                      form.setAnswer(field.getVariable(), values);
                  }
              }
          }
          return form;
      }
docs: Returns a new Form to submit the completed values. The new Form will include all the fields
  of the original form except for the fields of type FIXED. Only the HIDDEN fields will
  include the same value of the original form. The other fields of the new form MUST be
  completed. If a field remains with no answer when sending the completed form, then it won't
  be included as part of the completed form.<p>
  
  The reason why the fields with variables are included in the new form is to provide a model
  for binding with any UI. This means that the UIs will use the original form (of type
  "form") to learn how to render the form, but the UIs will bind the fields to the form of
  type submit.
  
  @return a Form to submit the completed values.