ParseResult (@NotNull Token<PyElementType> token) { final PyBuiltinCache builtinCache = PyBuiltinCache.getInstance(myAnchor); final String name = token.getText().toString(); final TextRange range = token.getRange(); if (PyNames.UNKNOWN_TYPE.equals(name)) { return EMPTY_RESULT; } else if (PyNames.NONE.equals(name)) { return new ParseResult(PyNoneType.INSTANCE, range); } else if ("integer".equals(name) || PyNames.TYPE_LONG.equals(name)) { final PyClassType type = builtinCache.getIntType(); return type != null ? new ParseResult(type, range) : EMPTY_RESULT; } else if ("string".equals(name)) { final PyType type = builtinCache.getStringType(LanguageLevel.forElement(myAnchor)); return type != null ? new ParseResult(type, range) : EMPTY_RESULT; } else if ("bytestring".equals(name)) { final PyType type = builtinCache.getByteStringType(LanguageLevel.forElement(myAnchor)); return type != null ? new ParseResult(type, range) : EMPTY_RESULT; } else if ("bytes".equals(name)) { final PyClassType type = builtinCache.getBytesType(LanguageLevel.forElement(myAnchor)); return type != null ? new ParseResult(type, range) : EMPTY_RESULT; } else if (PyNames.TYPE_UNICODE.equals(name)) { final PyClassType type = builtinCache.getUnicodeType(LanguageLevel.forElement(myAnchor)); return type != null ? new ParseResult(type, range) : EMPTY_RESULT; } else if ("boolean".equals(name)) { final PyClassType type = builtinCache.getBoolType(); return type != null ? new ParseResult(type, range) : EMPTY_RESULT; } else if ("dictionary".equals(name)) { final PyClassType type = builtinCache.getDictType(); return type != null ? new ParseResult(type, range) : EMPTY_RESULT; } else if (PyNames.BASESTRING.equals(name)) { final PyType type = builtinCache.getStrOrUnicodeType(); return type != null ? new ParseResult(type, range) : EMPTY_RESULT; } final PyType builtinType = builtinCache.getObjectType(name); if (builtinType != null) { return new ParseResult(builtinType, range); } return null; }