protected function processClass($class)
    {
        if (!class_exists('\\' . $class)) {
            throw new ExtDirectException(" '{$class}' does not exist!");
        }

        $annotationReader = new AnnotationReader();
        AnnotationRegistry::registerLoader('class_exists');

        $reflectionClass = new ReflectionClass($class);
        $classAnnotation = $annotationReader->getClassAnnotation($reflectionClass, 'ExtDirect\Annotations\Direct');

        if ($classAnnotation instanceof \ExtDirect\Annotations\Direct) {
            $classAnnotation->setClassName($class);

            $methodCollection = new RemotableCollection();
            foreach ($reflectionClass->getMethods() as $reflectionMethod) {
                $methodAnnotation = $annotationReader->getMethodAnnotation($reflectionMethod, 'ExtDirect\Annotations\Remotable');

                if ($methodAnnotation instanceof \ExtDirect\Annotations\Remotable) {
                    $methodAnnotation->setMethodName($reflectionMethod->getName());
                    $methodCollection->add($methodAnnotation);
                }
            }

            $classAnnotation->setMethods($methodCollection);

            return $classAnnotation;
        }
        return false;
    }