code: public String replaceFieldTypes(String pattern, String skeleton, int options) {
          synchronized (this) { // synchronized since a getter must be thread-safe
              PatternWithMatcher patternNoMatcher = new PatternWithMatcher(pattern, null);
              return adjustFieldTypes(patternNoMatcher, current.set(skeleton, fp, false), EnumSet.noneOf(DTPGflags.class), options);
          }
      }
docs: Adjusts the field types (width and subtype) of a pattern to match what is
  in a skeleton. That is, if you supply a pattern like "d-M H:m", and a
  skeleton of "MMMMddhhmm", then the input pattern is adjusted to be
  "dd-MMMM hh:mm". This is used internally to get the best match for the
  input skeleton, but can also be used externally.
  
  @param pattern input pattern
  @param skeleton For the pattern to match to.
  @param options MATCH_xxx options for forcing the length of specified fields in
  the returned pattern to match those in the skeleton (when this would
  not happen otherwise). For default behavior, use MATCH_NO_OPTIONS.
  @return pattern adjusted to match the skeleton fields widths and subtypes.