ObjectData *create_object_only_no_init(CStrRef s, ObjectData* root /* = NULL*/) {
  {
    if (ObjectData* r = eval_create_object_only_hook(s, root)) return r;
  }
  const ObjectStaticCallbacks *cwo = get_builtin_object_static_callbacks(s);
  if (LIKELY(cwo != 0)) return cwo->createOnlyNoInit(root);
  return 0;
}
bool get_call_info_static_method(MethodCallPackage &mcp) {
  StringData *s ATTRIBUTE_UNUSED (mcp.rootCls);
  const ObjectStaticCallbacks *cwo =
    get_builtin_object_static_callbacks(s);
  if (LIKELY(cwo != 0)) {
    return ObjectStaticCallbacks::GetCallInfo(cwo,mcp,-1);
  }
  if (mcp.m_fatal) throw_missing_class(s->data());
  return false;
}
Variant get_class_constant(CStrRef s,
                           const char *constant,
                           int fatal /* = true */) {
  {
    Variant r;
    if (eval_get_class_constant_hook(r, s, constant)) return r;
  }
  {
    const ObjectStaticCallbacks * cwo = get_builtin_object_static_callbacks(s);
    if (cwo) return cwo->os_constant(constant);
  }
  if (fatal > 0) {
    raise_error("Couldn't find constant %s::%s", s.data(), constant);
  } else if (!fatal) {
    raise_warning("Couldn't find constant %s::%s", s.data(), constant);
  }
  return null;
}
const ObjectStaticCallbacks * get_object_static_callbacks(CStrRef s) {
  return get_builtin_object_static_callbacks(s);;
}