Because the Parser object uses it's private `text` member throughout the parsing process. Recursive calls like `new UiSelector().childSelector(new UiSelector().clickable())` instantiates a new UiSelectorParser to parse the inner argument. If the UiSelectorParser was a singleton, it would overwrite the string that the inner is parsing.

How about making the `methods` member static?