public function registerCallable(\SwaggerValidator\Common\Context $context, $type, $callable)
    {
        if (!$this->__isset($type)) {
            $context->throwException('Cannot find type : "' . $type . '" (Normalized : "' . $this->normalizeType($type) . '" ', __FILE__, __LINE__);
        }

        if (is_callable(array($callable, '__construct'))) {
            return parent::__set($this->normalizeType($type), $callable);
        }

        if (is_string($callable) && class_exists($callable)) {
            //there is a class. but can we instantiate it?
            $class = new \ReflectionClass($callable);

            if (!$class->isAbstract()) {
                return parent::__set($this->normalizeType($type), $callable);
            }
            else {
                $context->throwException('Callable is an abstract class : ' . $callable, __FILE__, __LINE__);
            }
        }

        $context->throwException('Callable is not callable : ' . $callable, __FILE__, __LINE__);
    }