Source GoToDefinitionUX(GotoDefinitionData gotoDefinitionData)
        {
            var sourceEntity = SourceEntityFactoryUX.GetDataTypeFromOffset(
                gotoDefinitionData.FilePath,
                gotoDefinitionData.SrcCode,
                gotoDefinitionData.CaretOffset,
                gotoDefinitionData.Compiler);

            return(sourceEntity == null ? null : sourceEntity.Source);
        }
        Source GoToDefinitionUno(GotoDefinitionData gotoDefinitionData)
        {
            if (gotoDefinitionData.Compiler == null)
            {
                return(null);
            }

            var sourceEntity = GoToDefinition.TryGetSourceObject(
                gotoDefinitionData.Compiler,
                new Source(gotoDefinitionData.MainPackage, gotoDefinitionData.FilePath.NativePath),
                new CodeReader(gotoDefinitionData.SrcCode, gotoDefinitionData.CaretOffset),
                Parser.Parse(gotoDefinitionData.SrcCode));

            return(sourceEntity == null ? null : sourceEntity.Source);
        }
        public bool TryGotoDefinitionBasedOnSyntax(SyntaxLanguageType type, GotoDefinitionData gotoDefinitionData, out Source source)
        {
            source = null;
            var invalidType = false;

            switch (type)
            {
            case SyntaxLanguageType.Uno:
                source = GoToDefinitionUno(gotoDefinitionData);
                break;

            case SyntaxLanguageType.UX:
                source = GoToDefinitionUX(gotoDefinitionData);
                break;

            default:
                invalidType = true;
                break;
            }

            return(!invalidType && source != null);
        }