docs: public static byte[] decode( byte[] source, int off, int len )
      {
          int    len34   = len * 3 / 4;
          byte[] outBuff = new byte[ len34 ]; // Upper limit on size of output
          int    outBuffPosn = 0;
          
          byte[] b4        = new byte[4];
          int    b4Posn    = 0;
          int    i         = 0;
          byte   sbiCrop   = 0;
          byte   sbiDecode = 0;
          for( i = 0; i < len; i++ )
          {
              sbiCrop = (byte)(source[i] & 0x7f); // Only the low seven bits
              sbiDecode = DECODABET[ sbiCrop ];
              
              if( sbiDecode >= WHITE_SPACE_ENC ) // White space, Equals sign or better
              {
                  if( sbiDecode >= EQUALS_SIGN_ENC )
                  {
                      b4[ b4Posn++ ] = sbiCrop;
                      if( b4Posn > 3 )
                      {
                          outBuffPosn += decode4to3( b4, 0, outBuff, outBuffPosn );
                          b4Posn = 0;
                          
                          // If that was the equals sign, break out of 'for' loop
                          if( sbiCrop == EQUALS_SIGN )
                              break;
                      }   // end if: quartet built
                      
                  }   // end if: equals sign or better
                  
              }   // end if: white space, equals sign or better
              else
              {
  				LoggerFactory.getDefaultLogger().error( "Bad Base64 input character at " + i + ": " + source[i] + "(decimal)" );
                  return null;
              }   // end else: 
          }   // each input character
                                     
          byte[] out = new byte[ outBuffPosn ];
          System.arraycopy( outBuff, 0, out, 0, outBuffPosn ); 
          return out;
      }