public List<byte[]> tryDecode(final String targetToken){
  final ByteBuffer payloadBuf=extractValidPayloadFields(targetToken);
  if (payloadBuf == null) {
    return null;
  }
  final List<byte[]> fields=new ArrayList<>();
  try {
    byte[] field=null;
    while ((field=tryReadPayloadNextField(payloadBuf)).length > 0) {
      fields.add(field);
      if (fields.size() > MAX_FIELD_SIZE) {
        return null;
      }
    }
    return fields;
  }
 catch (  final BufferUnderflowException e) {
    return null;
  }
}

public List < byte [ ] > tryDecode ( final String targetToken ) { final ByteBuffer payloadBuf = extractValidPayloadFields ( targetToken ) ; if ( payloadBuf == null ) { return null ; } final List < byte [ ] > fields = new ArrayList < > ( ) ; try { byte [ ] field = null ; while ( ( field = tryReadPayloadNextField ( payloadBuf ) ) . length > 0 ) { fields . add ( field ) ; if ( fields . size ( ) > MAX_FIELD_SIZE ) { return null ; } } return fields ; } catch ( final BufferUnderflowException e ) { return null ; } }
return null if token is malformed or expired
