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