   # - from given source (assumed to be number of bytes when numeric)
   # - with given byte order (defaults to big-endian)
   # - with given implicit growth strategy (defaults to false)
-  constructor: (source=0, order=self.BIG_ENDIAN, implicitGrowth=false) ->
+  constructor: (source = 0, order = self.BIG_ENDIAN, implicitGrowth = false) ->
 
     # Holds buffer
     @_buffer = null

    return '[ByteBuffer; Order: ' + order + '; Length: ' + @length + '; Index: ' + @_index + '; Available: ' + @available + ']'

  # Hex representation of this buffer with given spacer
  toHex: (spacer=' ') ->
    return Array::map.call(@_raw, (byte) ->
      ('00' + byte.toString(16).toUpperCase()).slice(-2)
    ).join(spacer)

  # ASCII representation of this buffer with given spacer and optional byte alignment
  toASCII: (spacer=' ', align=true, unknown='\uFFFD') ->
    prefix = if align then ' ' else ''
    return Array::map.call(@_raw, (byte) ->
      return if (byte < 0x20 || byte > 0x7E) then prefix + unknown else prefix + String.fromCharCode(byte)

  # Reads UTF-8 encoded string of given number of bytes (defaults to number of bytes available)
  #
  # Based on David Flanagan's BufferView (https://github.com/davidflanagan/BufferView/blob/master/BufferView.js#L195)
  readString: (bytes = @available) ->
    if bytes > @available
      throw new Error('Cannot read ' + bytes + ' byte(s), ' + @available + ' available')

