private void VerifyProjectReference(INamedTag classTag, IDeclaredElement typeElement) {
            Logger.LogMessage("VerifyProjectReference");
            // TODO: verify if this logic works if the mapped class is references as an assembly instead of a project
            if ((classTag == null) || (typeElement == null)) {
                Logger.LogMessage("classtag {0}, typeElement {1}", classTag, typeElement);
                return;
            }

            IProject projectOfMappings = classTag.GetProject();
            if (projectOfMappings == null) {
                Logger.LogMessage("Project of mapping not found");
                return;
            }

            Logger.LogMessage("ProjectOfMappings {0}", projectOfMappings.Name);
            foreach (IProjectFile projectFile in typeElement.GetProjectFiles()) {
                Logger.LogMessage("Project {0}", projectFile.GetProject().Name);
                if (projectFile.GetProject() == projectOfMappings) {
                    Logger.LogMessage("Type is defined in same project");
                    return;
                }
                foreach (IProjectReference projectReference in classTag.GetProject().GetProjectReferences()) {
                    Logger.LogMessage("Project reference {0}", projectReference.ResolveReferencedProject().Name);
                    if (projectReference.ResolveReferencedProject() == projectFile.GetProject()) {
                        return;
                    }
                }
            }
            
            IElement typeElementTag = classTag.GetNameAttribute();
            AddHighlighting(typeElementTag, new ReferenceHighlighting(string.Format("Mapping project '{0}' should reference project '{1}'",
                projectOfMappings.Name, typeElement.GetProjectFiles()[0].GetProject().Name)));
        }
 private void ProcessJoinedSubclassElement(INamedTag joinedSubclassTag) {
     ITypeElement typeElement = HighlightUndefinedType(joinedSubclassTag, "name");
     VerifyProjectReference(joinedSubclassTag, typeElement);
 }