protected override LookupResult Lookup(IdentifierNameSyntax name, Package fromPackage)
        {
            var identifier = name.Identifier.ValueText;

            // First look in the current container
            var result = Resolve(mergedContainer.GetMembers(identifier), fromPackage);
            if(!result.IsEmpty)
                return result;

            // Then look in the imported names
            var importedSymbols = imports[identifier].Select(x => x.Reference).ToList();
            result = Resolve(importedSymbols, fromPackage);
            if(!result.IsEmpty)
                return result;

            // Then look in containing scopes
            if(ContainingScope != null)
                return ContainingScope.Lookup(name, fromPackage);

            return LookupResult.Empty;
        }
 protected abstract LookupResult Lookup(IdentifierNameSyntax identifierName, Package fromPackage);
 internal IdentifierName(IdentifierNameSyntax syntax, Package containingPackage, DeclarationReference declaration)
     : base(syntax, containingPackage)
 {
     Declaration = declaration;
 }
 protected override LookupResult Lookup(IdentifierNameSyntax identifierName, Package fromPackage)
 {
     throw new NotImplementedException();
 }