List<M> (C aClass) { List<M> result = myClassToMemberInfoMap.get(aClass); if(result == null) { ArrayList<M> temp = new ArrayList<>(); extractClassMembers(aClass, temp); result = Collections.unmodifiableList(temp); myClassToMemberInfoMap.put(aClass, result); } return result; }