code: private MethodSpec buildWrapperMethod(Format format) {
      MethodSpec.Builder method = MethodSpec.methodBuilder("formatWrapped")
          .addAnnotation(Override.class)
          .addModifiers(PUBLIC)
          .addParameter(CALENDAR_FORMAT, "wrapperType")
          .addParameter(CALENDAR_FORMAT, "dateType")
          .addParameter(CALENDAR_FORMAT, "timeType")
          .addParameter(String.class, "dateSkel")
          .addParameter(String.class, "timeSkel")
          .addParameter(ZonedDateTime.class, "d")
          .addParameter(StringBuilder.class, "b");
  
      Map<String, List<String>> map = deduplicateFormats(format);
  
      method.beginControlFlow("switch (wrapperType)");
      for (Map.Entry<String, List<String>> entry : map.entrySet()) {
        for (String type : entry.getValue()) {
          method.addCode("case $L:\n", type);
        }
        method.beginControlFlow("");
        addWrapper(method, entry.getKey());
        method.addStatement("break");
        method.endControlFlow();
      }
      method.endControlFlow();
  
      return method.build();
    }
docs: Build a method that will format a date and time (named or skeleton) in a
  localized wrapper.