private boolean wordsAreDifferent(StepModel firstStep, StepModel stepModel) {
        for (int wordCounter = 0; wordCounter < firstStep.getWords().size(); wordCounter++) {
            Word firstWord = firstStep.getWord(wordCounter);
            Word word = stepModel.getWord(wordCounter);

            if (firstWord.isArg() != word.isArg()) {
                return true;
            }

            if (!firstWord.isArg() && !firstWord.getValue().equals(word.getValue())) {
                return true;
            }

            if (firstWord.isArg() && firstWord.isDataTable()
                && !firstWord.getArgumentInfo().getDataTable().equals(word.getArgumentInfo().getDataTable())) {
                return true;
            }

        }
        return false;
    }
Attachments are only structurally different if one step has an inline attachment
and the other step either has no inline attachment or the inline attachment is
different.
jgiven-core/src/main/java/com/tngtech/jgiven/report/analysis/CaseArgumentAnalyser.java