code: private void processBlock(List<GenericCriteria> list, byte[] block)
     {
        if (block != null)
        {
           if (MPPUtility.getShort(block, 0) > 0x3E6)
           {
              addCriteria(list, block);
           }
           else
           {
              switch (block[0])
              {
                 case (byte) 0x0B:
                 {
                    processBlock(list, getChildBlock(block));
                    break;
                 }
  
                 case (byte) 0x06:
                 {
                    processBlock(list, getListNextBlock(block));
                    break;
                 }
  
                 case (byte) 0xED: // EQUALS
                 {
                    addCriteria(list, block);
                    break;
                 }
  
                 case (byte) 0x19: // AND
                 case (byte) 0x1B:
                 {
                    addBlock(list, block, TestOperator.AND);
                    break;
                 }
  
                 case (byte) 0x1A: // OR
                 case (byte) 0x1C:
                 {
                    addBlock(list, block, TestOperator.OR);
                    break;
                 }
              }
           }
        }
     }
docs: Process a single criteria block.
  
  @param list parent criteria list
  @param block current block