code: @Override
      public Exception isCorrect (final ProtocolDataUnit protocolDataUnit) {
  
          final AbstractMessageParser parser = protocolDataUnit.getBasicHeaderSegment().getParser();
  
          if (parser instanceof DataInParser) {
  
              final DataInParser dataParser = (DataInParser) parser;
              try {
                  if (connection.getSettingAsBoolean(OperationalTextKey.DATA_PDU_IN_ORDER) && connection.getSettingAsBoolean(OperationalTextKey.DATA_SEQUENCE_IN_ORDER)) {
                      if (dataParser.getBufferOffset() < bufferOffset) { return new IllegalStateException(new StringBuilder("This buffer offsets must be in increasing order and overlays are forbidden.").append(" The parserOffset here is ").append(dataParser.getBufferOffset()).append(" and the bufferOffset is ").append(bufferOffset).toString()); }
                      bufferOffset = dataParser.getBufferOffset();
                  }
              } catch (OperationalTextKeyException e) {
                  return e;
              }
  
              if (dataParser.getDataSequenceNumber() != expectedDataSequenceNumber) { return new IllegalStateException(new StringBuilder("Data Sequence Number Mismatch (received, expected): " + dataParser.getDataSequenceNumber() + ", " + expectedDataSequenceNumber).toString());
  
              }
  
              incrementExpectedDataSequenceNumber();
  
              if (dataParser.isStatusFlag()) {
                  incrementExpectedDataSequenceNumber();
                  return super.isCorrect(protocolDataUnit);
              } else if (dataParser.getStatusSequenceNumber() != 0) { return new IllegalStateException(new StringBuilder("Status Sequence Number must be zero.").toString()); }
              return null;
          } else if (parser instanceof SCSIResponseParser) {
              try {
                  if (connection.getSettingAsBoolean(OperationalTextKey.IMMEDIATE_DATA)) { return new IllegalStateException(new StringBuilder("Parser ").append("should not be instance of SCSIResponseParser because of ImmendiateData-Flag \"no\" in config!").toString()); }
              } catch (OperationalTextKeyException e) {
                  return e;
              }
  
              return null;
          } else {
              return new IllegalStateException(new StringBuilder("Parser ").append(protocolDataUnit.getBasicHeaderSegment().getParser().toString()).append(" is instance of ").append(protocolDataUnit.getBasicHeaderSegment().getParser().getClass().toString()).append(" and not instance of either DataInParser or SCSIResponseParser!").toString());
          }
  
      }
docs: {@inheritDoc}