private function _lockUncompiledClasses()
    {
        if (!empty($this->_ourCompilerClassLocks)) {
            throw new BadPropertyMapException('Detected multiple calls to _lockUncompiledClasses().');
        }

        foreach ($this->_classHierarchy as $classInfo) {
            // If the class isn't already compiled, we'll lock it so nothing
            // else can refer to it. We'll lock every unresolved class, and then
            // we'll be unlocking them one by one as we resolve them during THIS
            // exact compile-call. No other sub-compilers are allowed to use
            // them while we're resolving them!
            if (!isset($this->_propertyMapCache->classMaps[$classInfo['className']])) {
                // NOTE: We now know that NONE of these unresolved classes were
                // in the lock-list before WE added them to it. That means that
                // we can safely clear ANY of those added locks if there's a
                // problem. But WE are NOT allowed to clear ANY OTHER LOCKS!
                $this->_ourCompilerClassLocks[$classInfo['className']] = true;
                $this->_propertyMapCache->compilerLocks[$classInfo['className']] = true;
            }
        }
    }