code: public byte [] after(byte [] message, final int moff, final int mlen, byte [] theNonce) {
              // check message
              if (!(message!=null && message.length>=(moff+mlen) &&
                      theNonce!=null && theNonce.length==nonceLength))
                  return null;
  
              // message buffer
              byte [] m = new byte[mlen + zerobytesLength];
  
              // cipher buffer
              byte [] c = new byte[m.length];
  
              for (int i = 0; i < mlen; i ++)
                  m[i+zerobytesLength] = message[i+moff];
  
              if (0 != crypto_box_afternm(c, m, m.length, theNonce, sharedKey))
                  return null;
  
              // wrap byte_buf_t on c offset@boxzerobytesLength
              ///return new byte_buf_t(c, boxzerobytesLength, c.length-boxzerobytesLength);
              byte [] ret = new byte[c.length-boxzerobytesLength];
  
              for (int i = 0; i < ret.length; i ++)
                  ret[i] = c[i+boxzerobytesLength];
  
              return ret;
          }
docs: /*
  @description
  Same as nacl.box, but uses a shared key precomputed with nacl.box.before,
  and passes a nonce explicitly.