If you extend CalendarEvent and add your own $has_many things break because CalendarEvent does
$has_manys = eval("return $class::\$has_many;");
which doesn't take the class hierarchy into account. Using
$has_manys = Object::combined_static($class, "has_many");
instead fixes this.