You should be able to use a spatial relator to check this, send the data to both Requestor and Supplier, use a unique ID as Attributes that must differ so you are not checking features against themselves and then use the class as the GroupBy. Touching polygons will have a related candidate count of >0
 
You could also use a Dissolver, grouping by class and building a list of dissolved polygons. Only polygons with the same class that are touching each other will be dissolved and thus have a list of the polygons that were touching.
                
     
                                    
            You should be able to use a spatial relator to check this, send the data to both Requestor and Supplier, use a unique ID as Attributes that must differ so you are not checking features against themselves and then use the class as the GroupBy. Touching polygons will have a related candidate count of >0
 
You could also use a Dissolver, grouping by class and building a list of dissolved polygons. Only polygons with the same class that are touching each other will be dissolved and thus have a list of the polygons that were touching.
Thanks @ebygomm, that worked great.
B