docs: public static byte[] base64decode( String coded ) {
          if ( null == coded )
              return null;
          byte[] src = coded.getBytes();
          int len = src.length;
          int dlen = len - (len/77);
          dlen = (dlen >>> 2) + (dlen >>> 1);
          int rem = 0;
          if ( 61 == src[ len - 1 ] )
              rem++;
          if ( 61 == src[ len - 2 ] )
              rem++;
          dlen -= rem;
          byte[] dst = new byte[ dlen ];
          
          int pos = 0;
          int dpos = 0;
          int col = 0;
          // adjust for remainder
          len -= 4;
          
          while ( pos < len ) {
              byte b0 = _base64de[ src[ pos++ ] ];
              byte b1 = _base64de[ src[ pos++ ] ];
              byte b2 = _base64de[ src[ pos++ ] ];
              byte b3 = _base64de[ src[ pos++ ] ];
              
              if ( B64INV == b0 || B64INV == b1 || B64INV == b2 || B64INV == b3 )
                  throw new RuntimeException( "Invalid character at or around position " + pos );
              
              dst[ dpos++ ] = (byte) ((b0 << 2) | ((b1 >>> 4) & 0x03));
              dst[ dpos++ ] = (byte) ((b1 << 4) | ((b2 >>> 2) & 0x0f));
              dst[ dpos++ ] = (byte) ((b2 << 6) | (b3 & 0x3f));
              col += 4;
              // skip linefeed which is only allowed here; if at that pos is any
              // other char then the input is goofed and we throw an
              // exception
              if ( 76 == col ) {
                  if ( 10 != src[ pos++ ] )
                      throw new RuntimeException( "No linefeed found at position " + (pos - 1 ) );
                  col = 0;
              }
          }
          
          // process the remainder
          byte b0 = _base64de[ src[ pos++ ] ];
          byte b1 = _base64de[ src[ pos++ ] ];
          byte b2 = _base64de[ src[ pos++ ] ];
          byte b3 = _base64de[ src[ pos++ ] ];
          if ( B64INV == b0 || B64INV == b1 || B64INV == b2 || B64INV == b3 )
              throw new RuntimeException( "Invalid character at or around position " + pos );
          
          dst[ dpos++ ] = (byte) ((b0 << 2) | ((b1 >>> 4) & 0x03));
          if ( 2 == rem )
              return dst;
          dst[ dpos++ ] = (byte) ((b1 << 4) | ((b2 >>> 2) & 0x0f));
          if ( 1 == rem )
              return dst;
          dst[ dpos++ ] = (byte) ((b2 << 6) | (b3 & 0x3f));
          
          return dst;
      }