code: public GitlabMilestone updateMilestone(
              Serializable projectId,
              int milestoneId,
              String title,
              String description,
              Date dueDate,
              Date startDate,
              String stateEvent) throws IOException {
          String tailUrl = GitlabProject.URL + "/" +
                  sanitizeProjectId(projectId) +
                  GitlabMilestone.URL + "/" +
                  milestoneId;
          GitlabHTTPRequestor requestor = retrieve().method(PUT);
          SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
          if (title != null) {
              requestor.with("title", title);
          }
          if (description != null) {
              requestor = requestor.with("description", description);
          }
          if (dueDate != null) {
              requestor = requestor.with("due_date", formatter.format(dueDate));
          }
          if (startDate != null) {
              requestor = requestor.with("start_date", formatter.format(startDate));
          }
          if (stateEvent != null) {
              requestor.with("state_event", stateEvent);
          }
          return requestor.to(tailUrl, GitlabMilestone.class);
      }
docs: Updates an existing project milestone.
  
  @param projectId   The ID of the project.
  @param milestoneId The ID of the milestone.
  @param title       The title of the milestone. (Optional)
  @param description The description of the milestone. (Optional)
  @param dueDate     The date the milestone is due. (Optional)
  @param startDate   The start date of the milestone. (Optional)
  @param stateEvent  A value used to update the state of the milestone.
  (Optional) (activate | close)
  @return The updated, de-serialized milestone.
  @throws IOException on gitlab api call error