public static function setDefaultCallBehavior($behavior)
    {
        // allow custom handlers
        if ($behavior instanceof \Closure) {
            self::$__defaultCallBehavior = $behavior;
            return;
        }

        switch($behavior) {
            case self::DEFAULT_BEHAVIOUR_RETURN_NULL:
            case self::DEFAULT_BEHAVIOUR_RETURN_SELF;
            case self::DEFAULT_BEHAVIOUR_THROW_EXCEPTION:
                self::$__defaultCallBehavior = $behavior;
                return;
        }

        throw new \InvalidArgumentException("Invalid behavior option ($behavior)");
    }