# File lib/archive/zip/extra_field/extended_timestamp.rb, line 25
      def parse_central(data)
        unless data.size == 5 || data.size == 9 || data.size == 13 then
          raise Zip::ExtraFieldError,
            "invalid size for extended timestamp: #{data.size}"
        end
        flags, *times = data.unpack('CV*')
        mtime = nil
        atime = nil
        crtime = nil
        if flags & 0b001 != 0 then
          if times.size == 0 then
            # Report an error if the flags indicate that the last modified time
            # field should be present when it is not.
            raise Zip::ExtraFieldError,
              'corrupt extended timestamp: last modified time field not present'
          end
          mtime = Time.at(times.shift)
        end
        if flags & 0b010 != 0 then
          # If parsing the central file record version of this field, this flag
          # may be set without having the corresponding time value.
          # Use the time value if available, but ignore it if it's missing.
          if times.size > 0 then
            atime = Time.at(times.shift)
          end
        end
        if flags & 0b100 != 0 then
          # If parsing the central file record version of this field, this flag
          # may be set without having the corresponding time value.
          # Use the time value if available, but ignore it if it's missing.
          if times.size > 0 then
            crtime = Time.at(times.shift)
          end
        end
        new(mtime, atime, crtime)
      end