public function getObservableEvents()
{
if (is_null($this->events)) {
// Assign an empty array to protect us from behaviours without any valid method
$this->events = array();
$reflection = new \ReflectionObject($this);
$methods = $reflection->getMethods(\ReflectionMethod::IS_PUBLIC);
foreach ($methods as $m) {
if ($m->name == 'getObservableEvents') {
continue;
}
if ($m->name == '__construct') {
continue;
}
$this->events[] = $m->name;
}
}
return $this->events;
}