code: protected function match_tags($tags) {
  		$res = false;
  
  		foreach($tags as $tag => $match) {
  			if (!is_array($match)) {
  				$match = array(
  					'match' => $match,
  					'operator' => 'or',
  					'compare' => 'total',
  					'case_sensitive' => false
  				);
  			} else {
  				if (is_int($tag)) {
  					$tag = $match['tag'];
  				}
  				if (!isset($match['match'])) {
  					$match['match'] = true;
  				}
  				if (!isset($match['operator'])) {
  					$match['operator'] = 'or';
  				}
  				if (!isset($match['compare'])) {
  					$match['compare'] = 'total';
  				}
  				if (!isset($match['case_sensitive'])) {
  					$match['case_sensitive'] = false;
  				}
  			}
  
  			if (($match['operator'] === 'and') && (!$res)) {
  				return false;
  			} elseif (!($res && ($match['operator'] === 'or'))) {
  				if ($match['compare'] === 'total') {
  					$a = $this->tag;
  				} elseif ($match['compare'] === 'namespace') {
  					$a = $this->getNamespace();
  				} elseif ($match['compare'] === 'name') {
  					$a = $this->getTag();
  				}
  
  				if ($match['case_sensitive']) {
  					$res = (($a === $tag) === $match['match']);
  				} else {
  					$res = ((strcasecmp($a, $tag) === 0) === $match['match']);
  				}
  			}
  		}
  
  		return $res;
  	}
docs: Checks if tag matches certain conditions
  @param array $tags array('tag1', 'tag2') or array(array(
  'tag' => 'tag1',
  'operator' => 'or'/'and',
  'compare' => 'total'/'namespace'/'name',
  'case_sensitive' => true))
  @return bool
  @internal Used by selector class
  @see match()
  @access private