public final class org.springframework.http.MediaTypeFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.springframework.http.MediaTypeFactory
  super_class: java.lang.Object
{
  private static final java.lang.String MIME_TYPES_FILE_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "/org/springframework/http/mime.types"

  private static final org.springframework.util.MultiValueMap<java.lang.String, org.springframework.http.MediaType> fileExtensionToMediaTypes;
    descriptor: Lorg/springframework/util/MultiValueMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/springframework/util/MultiValueMap<Ljava/lang/String;Lorg/springframework/http/MediaType;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 47
            invokestatic org.springframework.http.MediaTypeFactory.parseMimeTypes:()Lorg/springframework/util/MultiValueMap;
            putstatic org.springframework.http.MediaTypeFactory.fileExtensionToMediaTypes:Lorg/springframework/util/MultiValueMap;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.http.MediaTypeFactory this
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 51
            return
        end local 0 // org.springframework.http.MediaTypeFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/http/MediaTypeFactory;

  private static org.springframework.util.MultiValueMap<java.lang.String, org.springframework.http.MediaType> parseMimeTypes();
    descriptor: ()Lorg/springframework/util/MultiValueMap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=10, args_size=0
         0: .line 67
            ldc Lorg/springframework/http/MediaTypeFactory;
            ldc "/org/springframework/http/mime.types"
            invokevirtual java.lang.Class.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 0 /* is */
        start local 0 // java.io.InputStream is
         1: .line 68
            aconst_null
            astore 1
            aconst_null
            astore 2
         2: new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
            aload 0 /* is */
            getstatic java.nio.charset.StandardCharsets.US_ASCII:Ljava/nio/charset/Charset;
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            astore 3 /* reader */
        start local 3 // java.io.BufferedReader reader
         3: .line 69
            new org.springframework.util.LinkedMultiValueMap
            dup
            invokespecial org.springframework.util.LinkedMultiValueMap.<init>:()V
            astore 4 /* result */
        start local 4 // org.springframework.util.MultiValueMap result
         4: .line 71
            goto 15
        start local 5 // java.lang.String line
         5: .line 72
      StackMap locals: java.io.InputStream java.lang.Throwable java.lang.Throwable java.io.BufferedReader org.springframework.util.MultiValueMap java.lang.String
      StackMap stack:
            aload 5 /* line */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 15
            aload 5 /* line */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 35
            if_icmpne 7
         6: .line 73
            goto 15
         7: .line 75
      StackMap locals:
      StackMap stack:
            aload 5 /* line */
            ldc " \t\n\r\f"
            invokestatic org.springframework.util.StringUtils.tokenizeToStringArray:(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
            astore 6 /* tokens */
        start local 6 // java.lang.String[] tokens
         8: .line 76
            aload 6 /* tokens */
            iconst_0
            aaload
            invokestatic org.springframework.http.MediaType.parseMediaType:(Ljava/lang/String;)Lorg/springframework/http/MediaType;
            astore 7 /* mediaType */
        start local 7 // org.springframework.http.MediaType mediaType
         9: .line 77
            iconst_1
            istore 8 /* i */
        start local 8 // int i
        10: goto 14
        11: .line 78
      StackMap locals: java.lang.String[] org.springframework.http.MediaType int
      StackMap stack:
            aload 6 /* tokens */
            iload 8 /* i */
            aaload
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 9 /* fileExtension */
        start local 9 // java.lang.String fileExtension
        12: .line 79
            aload 4 /* result */
            aload 9 /* fileExtension */
            aload 7 /* mediaType */
            invokeinterface org.springframework.util.MultiValueMap.add:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 9 // java.lang.String fileExtension
        13: .line 77
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 8 /* i */
            aload 6 /* tokens */
            arraylength
            if_icmplt 11
        end local 8 // int i
        end local 7 // org.springframework.http.MediaType mediaType
        end local 6 // java.lang.String[] tokens
        end local 5 // java.lang.String line
        15: .line 71
      StackMap locals: java.io.InputStream java.lang.Throwable java.lang.Throwable java.io.BufferedReader org.springframework.util.MultiValueMap
      StackMap stack:
            aload 3 /* reader */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            dup
            astore 5 /* line */
        start local 5 // java.lang.String line
        16: ifnonnull 5
        17: .line 82
            aload 4 /* result */
        18: .line 83
            aload 3 /* reader */
            ifnull 19
            aload 3 /* reader */
            invokevirtual java.io.BufferedReader.close:()V
        19: .line 82
      StackMap locals: java.io.InputStream java.lang.Throwable java.lang.Throwable java.io.BufferedReader org.springframework.util.MultiValueMap java.lang.String
      StackMap stack: org.springframework.util.MultiValueMap
            areturn
        end local 5 // java.lang.String line
        end local 4 // org.springframework.util.MultiValueMap result
      StackMap locals: java.io.InputStream java.lang.Throwable java.lang.Throwable java.io.BufferedReader
      StackMap stack: java.lang.Throwable
        20: astore 1
        21: .line 83
            aload 3 /* reader */
            ifnull 22
            aload 3 /* reader */
            invokevirtual java.io.BufferedReader.close:()V
        end local 3 // java.io.BufferedReader reader
      StackMap locals:
      StackMap stack:
        22: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        23: astore 2
            aload 1
            ifnonnull 24
            aload 2
            astore 1
            goto 25
      StackMap locals:
      StackMap stack:
        24: aload 1
            aload 2
            if_acmpeq 25
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        25: aload 1
            athrow
        26: .line 84
      StackMap locals: java.io.InputStream
      StackMap stack: java.io.IOException
            astore 1 /* ex */
        start local 1 // java.io.IOException ex
        27: .line 85
            new java.lang.IllegalStateException
            dup
            ldc "Could not load '/org/springframework/http/mime.types'"
            aload 1 /* ex */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.io.IOException ex
        end local 0 // java.io.InputStream is
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            1   28     0             is  Ljava/io/InputStream;
            3   22     3         reader  Ljava/io/BufferedReader;
            4   20     4         result  Lorg/springframework/util/MultiValueMap<Ljava/lang/String;Lorg/springframework/http/MediaType;>;
            5   15     5           line  Ljava/lang/String;
           16   20     5           line  Ljava/lang/String;
            8   15     6         tokens  [Ljava/lang/String;
            9   15     7      mediaType  Lorg/springframework/http/MediaType;
           10   15     8              i  I
           12   13     9  fileExtension  Ljava/lang/String;
           27   28     1             ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3    18      20  any
           2    19      23  any
          20    23      23  any
           1    19      26  Class java.io.IOException
          20    26      26  Class java.io.IOException
    Signature: ()Lorg/springframework/util/MultiValueMap<Ljava/lang/String;Lorg/springframework/http/MediaType;>;

  public static java.util.Optional<org.springframework.http.MediaType> getMediaType(org.springframework.core.io.Resource);
    descriptor: (Lorg/springframework/core/io/Resource;)Ljava/util/Optional;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.core.io.Resource resource
         0: .line 95
            aload 0 /* resource */
            invokestatic java.util.Optional.ofNullable:(Ljava/lang/Object;)Ljava/util/Optional;
         1: .line 96
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  org/springframework/core/io/Resource.getFilename()Ljava/lang/String; (9 itf)
                  (Lorg/springframework/core/io/Resource;)Ljava/lang/String;
            invokevirtual java.util.Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
         2: .line 97
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  org/springframework/http/MediaTypeFactory.getMediaType(Ljava/lang/String;)Ljava/util/Optional; (6)
                  (Ljava/lang/String;)Ljava/util/Optional;
            invokevirtual java.util.Optional.flatMap:(Ljava/util/function/Function;)Ljava/util/Optional;
         3: .line 95
            areturn
        end local 0 // org.springframework.core.io.Resource resource
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0  resource  Lorg/springframework/core/io/Resource;
    Signature: (Lorg/springframework/core/io/Resource;)Ljava/util/Optional<Lorg/springframework/http/MediaType;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
          Name  Flags
      resource  

  public static java.util.Optional<org.springframework.http.MediaType> getMediaType(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Optional;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String filename
         0: .line 106
            aload 0 /* filename */
            invokestatic org.springframework.http.MediaTypeFactory.getMediaTypes:(Ljava/lang/String;)Ljava/util/List;
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.findFirst:()Ljava/util/Optional;
            areturn
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  filename  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/Optional<Lorg/springframework/http/MediaType;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
          Name  Flags
      filename  

  public static java.util.List<org.springframework.http.MediaType> getMediaTypes(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String filename
         0: .line 115
            aconst_null
            astore 1 /* mediaTypes */
        start local 1 // java.util.List mediaTypes
         1: .line 116
            aload 0 /* filename */
            invokestatic org.springframework.util.StringUtils.getFilenameExtension:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* ext */
        start local 2 // java.lang.String ext
         2: .line 117
            aload 2 /* ext */
            ifnull 4
         3: .line 118
            getstatic org.springframework.http.MediaTypeFactory.fileExtensionToMediaTypes:Lorg/springframework/util/MultiValueMap;
            aload 2 /* ext */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokeinterface org.springframework.util.MultiValueMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 1 /* mediaTypes */
         4: .line 120
      StackMap locals: java.util.List java.lang.String
      StackMap stack:
            aload 1 /* mediaTypes */
            ifnull 5
            aload 1 /* mediaTypes */
            goto 6
      StackMap locals:
      StackMap stack:
         5: invokestatic java.util.Collections.emptyList:()Ljava/util/List;
      StackMap locals:
      StackMap stack: java.util.List
         6: areturn
        end local 2 // java.lang.String ext
        end local 1 // java.util.List mediaTypes
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0    filename  Ljava/lang/String;
            1    7     1  mediaTypes  Ljava/util/List<Lorg/springframework/http/MediaType;>;
            2    7     2         ext  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/List<Lorg/springframework/http/MediaType;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
          Name  Flags
      filename  
}
SourceFile: "MediaTypeFactory.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles