# File mime/types.rb, line 221
221:         def initialize(arg, &block)
222:             case arg
223:                 when MIME::Type
224:                     __create(arg.content_type) do
225:                         init_extensions(arg.extensions)
226:                         init_encoding(arg.encoding)
227:                         init_system(arg.system)
228:                     end
229:                 when Array
230:                     __create(arg[0]) do
231:                         init_extensions(arg[1])
232:                         init_encoding(arg[2])
233:                         init_system(arg[3])
234:                     end
235:                 when Hash
236:                     cty = arg.key?('type') ? arg['type'] :
237:                             arg.key?('content-type') ? arg['content-type'] :
238:                             arg.key?('Content-Type') ? arg['Content-Type'] :
239:                             arg.key?('content_type') ? arg['content_type'] :
240:                             nil
241:                     ext = arg.key?('extensions') ? arg['extensions'] :
242:                             arg.key?('Extensions') ? arg['Extensions'] : nil
243:                     [arg['extensions']].flatten
244:                     enc = arg.key?('encoding') ? arg['encoding'] :
245:                             arg.key?('content-transfer-encoding') ? 
246:                                 arg['content-transfer-encoding'] :
247:                             arg.key?('Content-Transfer-Encoding') ? 
248:                                 arg['Content-Transfer-Encoding'] :
249:                             arg.key?('content_encoding') ?
250:                                 arg['content_encoding'] : nil
251:                     osy = arg.key?('system') ? arg['system'] :
252:                             arg.key?('System') ? arg['System'] : nil
253: 
254:                     __create(cty) do
255:                         init_extensions(ext)
256:                         init_encoding(enc)
257:                         init_system(osy)
258:                     end
259:                 when String
260:                     __create(arg, &block)
261:                 else
262:                     raise TypeError,
263:                           "Received #{arg.class} when expecting " \
264:                           "MIME::Type, Array, Hash, or String only."
265:                 end
266:         end