public function is($test) {
    if (is_callable($test)) {
      return (boolean) $test($this);
    }
    elseif (is_string($test)) {
      return $this->is(Filter::isInstanceOf($test));
    }
    else {
      throw new \InvalidArgumentException();
    }
  }