It might be better to use return early here to simplify the logic.

```php
public function __call($method, $args) {
	if (!method_exists($this, 'find' . ucfirst($method))) {
		throw new \BadMethodCallException('Unknown table method ' . $method);
	}
	if (current($args) instanceof Query) {
		$query = array_shift($args);
		$options = current($args) ?: [];
		return $this->{'find' . ucfirst($method)}($query, $options);
	}
	$options = current($args) ?: [];
	return $this->find($method, $options);
}
```