public override ResolveResult Resolve(CppResolver resolver)
        {
            ResolveResult targetRR = target.Resolve(resolver);

            if (targetRR.IsError)
            {
                return(targetRR);
            }
            IList <IType> typeArgs = typeArguments.Resolve(resolver.CurrentTypeResolveContext);

            using (var busyLock = BusyManager.Enter(this)) {
                if (busyLock.Success)
                {
                    return(resolver.ResolveMemberType(targetRR, identifier, typeArgs));
                }
                else
                {
                    // This can happen for "class Test : $Test.Base$ { public class Base {} }":
                    return(ErrorResolveResult.UnknownError);                    // don't cache this error
                }
            }
        }