private List<ISourceOrigin> GetMembersFromCurrentScope(int line, string lineSource)
{
var scopedDeclarations = GetScopedIntellisenseDeclarations(line);
var invocationStack = GetInvocationStack(lineSource);
IBooParseTreeNode firstNode = scopedDeclarations.Find(e => e.Name.Equals(invocationStack[0].Name, StringComparison.OrdinalIgnoreCase));
ISourceOrigin entity = firstNode.SourceOrigin;
var constructor = invocationStack[0].HadParentheses;
for (int i = 1; i < invocationStack.Length; i++)
{
var invocation = invocationStack[i];
var members = entity.GetMembers(constructor);
var matchingMember = members.Find(e => e.Name == invocation.Name);
constructor = false;
if (matchingMember != null)
entity = matchingMember;
}
return entity.GetMembers(constructor);
}