public MdxSet<Member<?>> getSetBy4LevelValues(
LinkedHashMap<String, LinkedHashMap<String, LinkedHashMap<String, List<String>>>> values) {
List<Member> members = new ArrayList<Member>();
for(String level1val : values.keySet()){
members.add(new Member(getLevel1(), level1val));
if(values.get(level1val)!=null){
for(String level2val : values.get(level1val).keySet()){
members.add(new Member(getLevel2(), level1val, level2val));
if(values.get(level1val).get(level2val)!=null){
for(String level3val : values.get(level1val).get(level2val).keySet()){
members.add(new Member(getLevel3(), level1val, level2val, level3val));
if(values.get(level1val).get(level2val).get(level3val)!=null){
for(String level4val : values.get(level1val).get(level2val).get(level3val)){//4rd level member
members.add(new Member(getLevel4(), level1val, level2val, level3val, level4val));
}
}else{//only 3rd level member
//members.add(new Member(getLevel3(), level1val, level2val, level3val));
}
}