     if pattern.endianness is "x" and not @padding?
         @skipping = pattern.bytes
     else
-
       if @padding?
         value = @padding
       else if pattern.arrayed

    pattern       = @pattern[@patternIndex]
    @repeat       = pattern.repeat
    @terminated   = not pattern.terminator
    @index        = 0

    delete        @padding

            return offset - start if offset is end

      # If we have not terminated, check for the termination state change.
      # Termination will change the loop settings.
      if @terminates
        if @terminated
          if @repeat is Number.MAX_VALUE
            @repeat = @index + 1
          else if @pattern[@patternIndex].padding
            @padding = @pattern[@patternIndex].padding
          else
            @skipping = (@repeat - (++@index)) * @pattern[@patternIndex].bytes
            if @skipping
              @repeat = @index + 1
              continue
        else
          # If we are at the end of the series, then we create an empty outgoing
          # array to hold the terminator, because the outgoing series may be a
          # buffer. We insert the terminator at next index in the outgoing array.
          # We then set repeat to allow one more iteration before callback.
          if @outgoing[@patternIndex].length is @index + 1
            @terminated = true
            @outgoing[@patternIndex] = []
            @outgoing[@patternIndex][@index + 1] = @pattern[@patternIndex].terminator.charCodeAt(0)

      # If we are reading an arrayed pattern and we have not read all of the
      # array elements, we repeat the current field type.
