public function isInstantiable()
    {
        if ($this->isTrait() || $this->isInterface() || $this->isAbstract()) {
            return false;
        }

        foreach (array('__construct', $this->getShortName()) as $method) {
            if ($this->hasMethod($method)) {
                return $this->getMethod($method)->isPublic();
            }
        }
        return true;
    }