code: @Override
    public void format(ZonedDateTime datetime, CalendarFormatOptions options, StringBuilder buffer) {
      String dateSkeleton = options.dateSkeleton() == null ? null : options.dateSkeleton().skeleton();
      String timeSkeleton = options.timeSkeleton() == null ? null : options.timeSkeleton().skeleton();
  
      CalendarFormat wrapperFormat = options.wrapperFormat();
      CalendarFormat dateFormat = options.dateFormat();
      CalendarFormat timeFormat = options.timeFormat();
      if (wrapperFormat != null) {
        // If wrapper is set it implies we want to output both a date and a time. If either is unset
        // we need to set it to the wrapper's format, unless a skeleton is defined.
        dateFormat = dateFormat != null ? dateFormat : (dateSkeleton == null ? wrapperFormat : null);
        timeFormat = timeFormat != null ? timeFormat : (timeSkeleton == null ? wrapperFormat : null);
      } else {
        // If wrapper is null, attempt to default it using the date's format or SHORT.
        if ((dateFormat != null || dateSkeleton != null) && (timeFormat != null || timeSkeleton != null)) {
          wrapperFormat = dateFormat != null ? dateFormat : CalendarFormat.SHORT;
        }
      }
  
      if (wrapperFormat != null) {
        formatWrapped(wrapperFormat, dateFormat, timeFormat, dateSkeleton, timeSkeleton, datetime, buffer);
        
      } else if (options.dateFormat() != null) {
        formatDate(options.dateFormat(), datetime, buffer);
  
      } else if (options.timeFormat() != null) {
        formatTime(options.timeFormat(), datetime, buffer);
      
      } else {
        String skeleton = dateSkeleton != null ? dateSkeleton : timeSkeleton;
  
        // If every property is null, fall back to this default "yMd"
        if (skeleton == null) {
          skeleton = CalendarSkeleton.yMd.skeleton();
        }
        formatSkeleton(skeleton, datetime, buffer);
      }
    }
docs: Main entry point for date time formatting.