public boolean comparePattern (Pattern tablePattern ){
        boolean levelingOK = (tablePattern.lowestRank < this.lowestRank);
        log.debug("tablePaTTERN lowest Rank"+ tablePattern.lowestRank+" this lowest Rank "+ this.lowestRank);
        boolean patternMatch = false;

        //__catch bombs___
        if(this.isBomb() && ( tablePattern.bombIndex < this.bombIndex) ) {
            this.setBomb();
            patternMatch = true;
        }

        //__naturally matching patterns are detected here__
        this.analyzePattern();
        log.debug("incoming Cards naturally is"+this.patternName+" while tablePattern is "+tablePattern.patternName+" while leveling is "+levelingOK);
        if(this.patternName.equals(tablePattern.patternName) && levelingOK ){
            patternMatch = true;
                log.debug("natural matching pattern "+patternMatch);
            return patternMatch;
        }

        //__this adjusts the patternCheck attempting to match the table Pattern (if 2 jokers have been played)
        if(this.jokerCards.size() > 1 && levelingOK) {
            int playedSequenceDepth = this.isRunOfSequence(tablePattern.builtSequenceLength);
            boolean deepeningOK = (this.deepeningJokers == tablePattern.builtSequenceLength);

                log.debug("deep jokers "+this.deepeningJokers +" deepeningOK is "+deepeningOK +" tablePatterns Length: "+tablePattern.builtSequenceLength);
                log.debug("tablePattern built SequenceLength: "+tablePattern.builtSequenceLength);
                log.debug("tablePattern.SequenceDepth :"+ tablePattern.builtSequenceDepth+" table Card Count"+tablePattern.cardCount);
                log.debug("playedPattern built SequenceLength: "+this.builtSequenceLength);
                log.debug("playedSequenceDepth "+playedSequenceDepth);

            if(playedSequenceDepth == tablePattern.builtSequenceDepth) {
                    log.debug("match is OK without deepening jokers");
                patternMatch = true;        log.debug("matching pattern without deepening Jokers"+patternMatch);
                this.setSequence(playedSequenceDepth);
                return patternMatch;
            }
            if(deepeningOK && ((playedSequenceDepth +1 ) == tablePattern.builtSequenceDepth) ){
                log.debug("deepening Jokers used - match is ok ");
                this.setSequence(tablePattern.builtSequenceDepth);
                patternMatch = true;
                return patternMatch;
            }
        }
        log.debug("compare has not found a valid option pattern match is "+ patternMatch);
        return patternMatch;
    }