/**
  * Appends a formatter to the builder which will optionally format/parse.
  * <p>
  * This method has the same effect as appending each of the constituent
  * parts directly to this builder surrounded by an {@link #optionalStart()} and
  * {@link #optionalEnd()}.
  * <p>
  * The formatter will format if data is available for all the fields contained within it.
  * The formatter will parse if the string matches, otherwise no error is returned.
  *
  * @param DateTimeFormatter $formatter the formatter to add, not null
  * @return DateTimeFormatterBuilder this, for chaining, not null
  */
 public function appendOptional(DateTimeFormatter $formatter)
 {
     $this->appendInternal($formatter->toPrinterParser(true));
     return $this;
 }