code: @Nonnull
    @ReturnsMutableCopy
    public static byte [] decodeFromFile (@Nonnull final String filename) throws IOException
    {
      // Setup some useful variables
      final File file = new File (filename);
  
      // Check for size of file
      if (file.length () > Integer.MAX_VALUE)
        throw new IOException ("File is too big for this convenience method (" + file.length () + " bytes).");
  
      final byte [] buffer = new byte [(int) file.length ()];
  
      // Open a stream
      try (final Base64InputStream bis = new Base64InputStream (FileHelper.getBufferedInputStream (file), DECODE))
      {
        int nOfs = 0;
        int numBytes;
  
        // Read until done
        while ((numBytes = bis.read (buffer, nOfs, 4096)) >= 0)
        {
          nOfs += numBytes;
        }
  
        // Save in a variable to return
        final byte [] decodedData = new byte [nOfs];
        System.arraycopy (buffer, 0, decodedData, 0, nOfs);
        return decodedData;
      }
    }
docs: Convenience method for reading a base64-encoded file and decoding it.
  <p>
  As of v 2.3, if there is a error, the method will throw an IOException.
  <b>This is new to v2.3!</b> In earlier versions, it just returned false,
  but in retrospect that's a pretty poor way to handle it.
  </p>
  
  @param filename
  Filename for reading encoded data
  @return decoded byte array
  @throws IOException
  if there is an error
  @since 2.1