Does this happen on the UI thread? Making blocking calls on the UI thread is a bad for many reasons, so possibly better option will be to issue an async call and check the position after call is returned. Also have you considered filtering out definitely incorrect results based on results of untyped parsing (which should be much faster than always using heavy machinery like symbols)