# File lib/archive/zip/extra_field/extended_timestamp.rb, line 69
      def parse_local(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 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 accessed time field not present'
          end
          atime = Time.at(times.shift)
        end
        if flags & 0b100 != 0 then
          if times.size == 0 then
            # Report an error if the flags indicate that the file creation time
            # field should be present when it is not.
            raise Zip::ExtraFieldError,
              'corrupt extended timestamp: file creation time field not present'
          end
          crtime = Time.at(times.shift)
        end
        new(mtime, atime, crtime)
      end