def matches? node, filtered_nodes
            node.type == @type and 
                @classes.all? {|c| node.has_class? c } and    
                @relations.all? {|r| r.matches? node, filtered_nodes}
        end
def matches? node, filtered_nodes
            node.type == @type and 
                @classes.all? {|c| node.has_class? c } and    
                @relations.all? {|r| r.matches? node, filtered_nodes}
        end
Create a new Selector based on the selector string

 @param selector [String] the selector string
 Does node get selected by this Selector in the context of the already filtered
 nodes?

 @param node [Node] the node to check against this Selector
 @param filtered_nodes [Array<Node>] the context of filtered nodes to take
   into account as well

 @return [Boolean] True if the node in the context of the
   filtered_nodes is selected by this Selector