Collection<PyCustomMember> (PyClassType classType, PsiElement location, @NotNull TypeEvalContext context) { final PyClass clazz = classType.getPyClass(); final String qualifiedName = clazz.getQualifiedName(); if ("socket._socketobject".equals(qualifiedName)) { final PyFile socketFile = (PyFile)clazz.getContainingFile(); List<PyCustomMember> socketMembers = socketFile.getUserData(SOCKET_MEMBERS_KEY); if (socketMembers == null) { socketMembers = calcSocketMembers(socketFile); socketFile.putUserData(SOCKET_MEMBERS_KEY, socketMembers); } return socketMembers; } return Collections.emptyList(); }