code: @Override
    public int read (@Nonnull final byte [] aDest,
                     @Nonnegative final int nOfs,
                     @Nonnegative final int nLen) throws IOException
    {
      int nIndex = 0;
      for (; nIndex < nLen; nIndex++)
      {
        final int nByte = read ();
  
        if (nByte >= 0)
          aDest[nOfs + nIndex] = (byte) nByte;
        else
          if (nIndex == 0)
          {
            // First byte is not Base64 - nothing read
            return -1;
          }
          else
          {
            // Out of 'for' loop
            break;
          }
      }
      return nIndex;
    }
docs: Calls {@link #read()} repeatedly until the end of stream is reached or
  <em>len</em> bytes are read. Returns number of bytes read into array or -1
  if end of stream is encountered.
  
  @param aDest
  array to hold values
  @param nOfs
  offset for array
  @param nLen
  max number of bytes to read into array
  @return bytes read into array or -1 if end of stream is encountered.
  @since 1.3