def matchingAnalyses(self, tokenJson):
        '''Determines whether given token (tokenJson) satisfies all the rules listed 
           in the WordTemplate and returns a list of analyses (elements of 
           tokenJson[ANALYSIS]) that are matching all the rules. An empty list is 
           returned if none of the analyses match (all the rules), or (!) if none of 
           the rules are describing the ANALYSIS part of the token;
        
           Parameters
           ----------
           tokenJson: pyvabamorf's analysis of a single word token;
        '''
        matchingResults = []
        if self.otherRules != None:
            otherMatches = []
            for field in self.otherRules:
                match = field in tokenJson and ((self.otherRules[field]).match(tokenJson[field]) != None)
                otherMatches.append( match )
            if not otherMatches or not all(otherMatches):
                return matchingResults
        if self.analysisRules != None:
            assert ANALYSIS in tokenJson, "No ANALYSIS found within token: "+str(tokenJson)
            for analysis in tokenJson[ANALYSIS]:
                # Check whether this analysis satisfies all the rules 
                # (if not, discard the analysis)
                matches = []
                for field in self.analysisRules:
                    value = analysis[field] if field in analysis else ""
                    match = (self.analysisRules[field]).match(value) != None
                    matches.append( match )
                if matches and all(matches):
                    matchingResults.append( analysis )
            #  Return True iff there was at least one analysis that 
            # satisfied all the rules;
            return matchingResults
        return matchingResults