public override object Validate(ScriptFile script, IExpression value, DocRange valueRange)
        {
            StringAction str = value as StringAction;

            if (str == null)
            {
                script.Diagnostics.Error("Expected string constant.", valueRange);
                return(null);
            }

            string resultingPath = Extras.CombinePathWithDotNotation(script.Uri.FilePath(), str.Value);

            if (resultingPath == null)
            {
                script.Diagnostics.Error("File path contains invalid characters.", valueRange);
                return(null);
            }

            string dir = Path.GetDirectoryName(resultingPath);

            if (Directory.Exists(dir))
            {
                DeltinScript.AddImportCompletion(script, dir, valueRange);
            }

            if (!File.Exists(resultingPath))
            {
                script.Diagnostics.Error($"No file was found at '{resultingPath}'.", valueRange);
                return(null);
            }

            if (FileTypes != null && !FileTypes.Contains(Path.GetExtension(resultingPath).ToLower()))
            {
                script.Diagnostics.Error($"Expected a file with the file type '{string.Join(", ", FileTypes)}'.", valueRange);
                return(null);
            }

            script.AddDefinitionLink(valueRange, new Location(Extras.Definition(resultingPath), DocRange.Zero));
            script.AddHover(valueRange, resultingPath);

            return(resultingPath);
        }