private static bool DeclarationCanBeShadowed(Declaration originalDeclaration, Declaration userDeclaration, DeclarationSite originalDeclarationSite)
        {
            if (originalDeclarationSite == DeclarationSite.NotApplicable)
            {
                return(false);
            }

            if (originalDeclarationSite == DeclarationSite.ReferencedProject)
            {
                return(DeclarationInReferencedProjectCanBeShadowed(originalDeclaration, userDeclaration));
            }

            if (originalDeclarationSite == DeclarationSite.OtherComponent)
            {
                return(DeclarationInAnotherComponentCanBeShadowed(originalDeclaration, userDeclaration));
            }

            return(DeclarationInTheSameComponentCanBeShadowed(originalDeclaration, userDeclaration));
        }
        private static bool DeclarationCanBeShadowed(Declaration originalDeclaration, Declaration userDeclaration, DeclarationSite originalDeclarationSite)
        {
            switch (originalDeclarationSite)
            {
            case DeclarationSite.NotApplicable:
                return(false);

            case DeclarationSite.ReferencedProject:
                return(DeclarationInReferencedProjectCanBeShadowed(originalDeclaration, userDeclaration));

            case DeclarationSite.OtherComponent:
                return(DeclarationInAnotherComponentCanBeShadowed(originalDeclaration, userDeclaration));

            default:
                return(DeclarationInTheSameComponentCanBeShadowed(originalDeclaration, userDeclaration));
            }
        }