javax.swing.tree.DefaultMutableTreeNode#getNextLeaf ( )源码实例Demo

下面列出了javax.swing.tree.DefaultMutableTreeNode#getNextLeaf ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: JDeodorant   文件: DelegationTree.java
public List<DelegationPath> getDelegationPathList() {
    List<DelegationPath> pathList = new ArrayList<DelegationPath>();

    DefaultMutableTreeNode leaf = rootNode.getFirstLeaf();
    while(leaf != null) {
        Object[] path = leaf.getUserObjectPath();
        DelegationPath delegationPath = new DelegationPath();
        for (Object pathLevel : path) {
            MethodObject mo = (MethodObject)pathLevel;
            delegationPath.addMethodInvocation(mo);
        }
        pathList.add(delegationPath);
        leaf = leaf.getNextLeaf();
    }
    return pathList;
}
 
public List<PsiInstanceOfExpression> getInstanceofExpressions() {
    List<PsiInstanceOfExpression> expressionList = new ArrayList<>();
    DefaultMutableTreeNode leaf = root.getFirstLeaf();
    while (leaf != null) {
        PsiExpression expression = (PsiExpression) leaf.getUserObject();
        if (expression instanceof PsiInstanceOfExpression) {
            PsiInstanceOfExpression instanceofExpression = (PsiInstanceOfExpression) expression;
            expressionList.add(instanceofExpression);
        }
        leaf = leaf.getNextLeaf();
    }
    return expressionList;
}
 
public List<PsiBinaryExpression> getInfixExpressionsWithEqualsOperator() {
    List<PsiBinaryExpression> expressionList = new ArrayList<>();
    DefaultMutableTreeNode leaf = root.getFirstLeaf();
    while (leaf != null) {
        PsiExpression expression = (PsiExpression) leaf.getUserObject();
        if (expression instanceof PsiBinaryExpression) {
            PsiBinaryExpression infixExpression = (PsiBinaryExpression) expression;
            IElementType operator = infixExpression.getOperationTokenType();
            if (operator.equals(JavaTokenType.EQEQ))
                expressionList.add(infixExpression);
        }
        leaf = leaf.getNextLeaf();
    }
    return expressionList;
}
 
public DefaultMutableTreeNode getRemainingExpression(PsiExpression expressionToBeRemoved) {
    DefaultMutableTreeNode newRoot = new DefaultMutableTreeNode();
    processExpression(newRoot, completeExpression);
    DefaultMutableTreeNode leaf = newRoot.getFirstLeaf();
    while (leaf != null) {
        PsiExpression expression = (PsiExpression) leaf.getUserObject();
        if (expression.equals(expressionToBeRemoved)) {
            DefaultMutableTreeNode parent = (DefaultMutableTreeNode) leaf.getParent();
            if (parent != null) {
                DefaultMutableTreeNode grandParent = (DefaultMutableTreeNode) parent.getParent();
                DefaultMutableTreeNode sibling = null;
                if (leaf.getNextSibling() != null) {
                    sibling = leaf.getNextSibling();
                } else if (leaf.getPreviousSibling() != null) {
                    sibling = leaf.getPreviousSibling();
                }
                if (grandParent != null) {
                    int parentIndex = grandParent.getIndex(parent);
                    grandParent.remove(parent);
                    grandParent.insert(sibling, parentIndex);
                } else {
                    newRoot = sibling;
                }
            } else {
                newRoot = null;
            }
            break;
        }
        leaf = leaf.getNextLeaf();
    }
    return newRoot;
}
 
源代码5 项目: JDeodorant   文件: AssociationDetection.java
public boolean checkForContainerAssociation(String from, String to) {
    DefaultMutableTreeNode root = new DefaultMutableTreeNode(from);
    recurse(root);
    DefaultMutableTreeNode firstLeaf = root.getFirstLeaf();
    if(checkFullPathForContainerAssociation(firstLeaf,to))
        return true;
    DefaultMutableTreeNode leaf = firstLeaf.getNextLeaf();
    while(leaf != null) {
        if(checkFullPathForContainerAssociation(leaf,to))
            return true;
        leaf = leaf.getNextLeaf();
    }
    return false;
}
 
public List<InstanceofExpression> getInstanceofExpressions() {
	List<InstanceofExpression> expressionList = new ArrayList<InstanceofExpression>();
	DefaultMutableTreeNode leaf = root.getFirstLeaf();
	while(leaf != null) {
		Expression expression = (Expression)leaf.getUserObject();
		if(expression instanceof InstanceofExpression) {
			InstanceofExpression instanceofExpression = (InstanceofExpression)expression;
			expressionList.add(instanceofExpression);
		}
		leaf = leaf.getNextLeaf();
	}
	return expressionList;
}
 
public List<InfixExpression> getInfixExpressionsWithEqualsOperator() {
	List<InfixExpression> expressionList = new ArrayList<InfixExpression>();
	DefaultMutableTreeNode leaf = root.getFirstLeaf();
	while(leaf != null) {
		Expression expression = (Expression)leaf.getUserObject();
		if(expression instanceof InfixExpression) {
			InfixExpression infixExpression = (InfixExpression)expression;
			InfixExpression.Operator operator = infixExpression.getOperator();
			if(operator.equals(InfixExpression.Operator.EQUALS))
				expressionList.add(infixExpression);
		}
		leaf = leaf.getNextLeaf();
	}
	return expressionList;
}
 
public DefaultMutableTreeNode getRemainingExpression(Expression expressionToBeRemoved) {
	DefaultMutableTreeNode newRoot = new DefaultMutableTreeNode();
	processExpression(newRoot, completeExpression);
	DefaultMutableTreeNode leaf = newRoot.getFirstLeaf();
	while(leaf != null) {
		Expression expression = (Expression)leaf.getUserObject();
		if(expression.equals(expressionToBeRemoved)) {
			DefaultMutableTreeNode parent = (DefaultMutableTreeNode)leaf.getParent();
			if(parent != null) {
				DefaultMutableTreeNode grandParent = (DefaultMutableTreeNode)parent.getParent();
				DefaultMutableTreeNode sibling = null;
				if(leaf.getNextSibling() != null) {
					sibling = leaf.getNextSibling();
				}
				else if(leaf.getPreviousSibling() != null) {
					sibling = leaf.getPreviousSibling();
				}
				if(grandParent != null) {
					int parentIndex = grandParent.getIndex(parent);
					grandParent.remove(parent);
					grandParent.insert(sibling, parentIndex);
				}
				else {
					newRoot = sibling;
				}
				break;
			}
			else {
				newRoot = null;
				break;
			}
		}
		leaf = leaf.getNextLeaf();
	}
	return newRoot;
}
 
源代码9 项目: JDeodorant   文件: TypeCheckElimination.java
public boolean isTypeCheckMethodStateSetter() {
	InheritanceTree tree = null;
	if(existingInheritanceTree != null)
		tree = existingInheritanceTree;
	else if(inheritanceTreeMatchingWithStaticTypes != null)
		tree = inheritanceTreeMatchingWithStaticTypes;
	if(tree != null) {
		DefaultMutableTreeNode root = tree.getRootNode();
		DefaultMutableTreeNode leaf = root.getFirstLeaf();
		List<String> subclassNames = new ArrayList<String>();
		while(leaf != null) {
			subclassNames.add((String)leaf.getUserObject());
			leaf = leaf.getNextLeaf();
		}
		Block typeCheckMethodBody = typeCheckMethod.getBody();
		List<Statement> statements = typeCheckMethodBody.statements();
		if(statements.size() > 0 && statements.get(0) instanceof SwitchStatement) {
			SwitchStatement switchStatement = (SwitchStatement)statements.get(0);
			List<Statement> statements2 = switchStatement.statements();
			ExpressionExtractor expressionExtractor = new ExpressionExtractor();
			int matchCounter = 0;
			for(Statement statement2 : statements2) {
				if(!(statement2 instanceof SwitchCase) && !(statement2 instanceof BreakStatement)) {
					List<Expression> classInstanceCreations = expressionExtractor.getClassInstanceCreations(statement2);
					if(classInstanceCreations.size() == 1) {
						ClassInstanceCreation classInstanceCreation = (ClassInstanceCreation)classInstanceCreations.get(0);
						Type classInstanceCreationType = classInstanceCreation.getType();
						if(subclassNames.contains(classInstanceCreationType.resolveBinding().getQualifiedName())) {
							matchCounter++;
						}
					}
				}
			}
			if(matchCounter == subclassNames.size())
				return true;
		}
	}
	return false;
}
 
源代码10 项目: swing_library   文件: FilteredTree.java
/**
 * 
 * @param root
 * @return boolean bad leaves were returned
 */
private boolean removeBadLeaves(DefaultMutableTreeNode root) {

	// no bad leaves yet
	boolean badLeaves = false;

	// reference first leaf
	DefaultMutableTreeNode leaf = root.getFirstLeaf();

	// if leaf is root then its the only node
	if (leaf.isRoot())
		return false;

	int leafCount = root.getLeafCount(); // this get method changes if in for loop so have to define outside of it
	for (int i = 0; i < leafCount; i++) {

		DefaultMutableTreeNode nextLeaf = leaf.getNextLeaf();

		// if it does not start with the text then snip it off its parent
		if (!leaf.getUserObject().toString().startsWith(textToMatch)) {
			DefaultMutableTreeNode parent = (DefaultMutableTreeNode) leaf.getParent();

			if (parent != null)
				parent.remove(leaf);

			badLeaves = true;
		}
		leaf = nextLeaf;
	}
	return badLeaves;
}
 
源代码11 项目: swing_library   文件: FilterTreeModel.java
/**
 * 
 * @param root
 * @return boolean bad leaves were returned
 */
private boolean removeBadLeaves(DefaultMutableTreeNode root) {

	// no bad leaves yet
	boolean badLeaves = false;

	// reference first leaf
	DefaultMutableTreeNode leaf = root.getFirstLeaf();

	// if leaf is root then its the only node
	if (leaf.isRoot())
		return false;

	int leafCount = root.getLeafCount(); // this get method changes if in for loop so have to define outside of it
	for (int i = 0; i < leafCount; i++) {

		DefaultMutableTreeNode nextLeaf = leaf.getNextLeaf();

		// if it does not start with the text then snip it off its parent
		if (!filter.accepts(filterText, leaf.getUserObject().toString())) {
			DefaultMutableTreeNode parent = (DefaultMutableTreeNode) leaf.getParent();

			if (parent != null)
				parent.remove(leaf);

			badLeaves = true;
		}
		leaf = nextLeaf;
	}
	return badLeaves;
}
 
private boolean typeObjectGetterMethodAlreadyExists() {
    InheritanceTree tree = typeCheckElimination.getInheritanceTreeMatchingWithStaticTypes();
    if (tree != null) {
        PsiMethod[] contextMethods = sourceTypeDeclaration.getMethods();
        DefaultMutableTreeNode rootNode = tree.getRootNode();
        String rootClassName = (String) rootNode.getUserObject();
        DefaultMutableTreeNode leaf = rootNode.getFirstLeaf();
        List<String> subclassNames = new ArrayList<>();
        while (leaf != null) {
            subclassNames.add((String) leaf.getUserObject());
            leaf = leaf.getNextLeaf();
        }
        for (PsiMethod contextMethod : contextMethods) {
            PsiType returnType = contextMethod.getReturnType();
            if (returnType != null) {
                if (returnType.getCanonicalText().equals(rootClassName)) {
                    PsiCodeBlock contextMethodBody = contextMethod.getBody();
                    if (contextMethodBody != null) {
                        PsiStatement[] statements = contextMethodBody.getStatements();
                        if (statements.length > 0 && statements[0] instanceof PsiSwitchStatement) {
                            PsiSwitchStatement switchStatement = (PsiSwitchStatement) statements[0];
                            PsiStatement[] statements2 = switchStatement.getBody().getStatements();
                            int matchCounter = 0;
                            for (PsiStatement statement2 : statements2) {
                                if (statement2 instanceof PsiReturnStatement) {
                                    PsiReturnStatement returnStatement = (PsiReturnStatement) statement2;
                                    PsiExpression returnStatementExpression = returnStatement.getReturnValue();
                                    if (returnStatementExpression instanceof PsiNewExpression) {
                                        PsiNewExpression classInstanceCreation = (PsiNewExpression) returnStatementExpression;
                                        PsiClass createdClass = (PsiClass) classInstanceCreation.getClassReference().resolve();
                                        if (createdClass != null && subclassNames.contains(createdClass.getQualifiedName())) {
                                            matchCounter++;
                                        }
                                    }
                                }
                            }
                            if (matchCounter == subclassNames.size())
                                return true;
                        }
                    }
                }
            }
        }
    }
    return false;
}
 
源代码13 项目: IntelliJDeodorant   文件: TypeCheckElimination.java
public List<String> getSubclassNames() {
    List<String> subclassNames = new ArrayList<>();
    for (PsiExpression expression : typeCheckMap.keySet()) {
        List<PsiField> simpleNameGroup = staticFieldMap.get(expression);
        if (simpleNameGroup != null) {
            for (PsiField simpleName : simpleNameGroup) {
                String staticFieldName = simpleName.getName();
                PsiType castingType = getCastingType(typeCheckMap.get(expression));
                StringBuilder subclassName;
                if (!staticFieldName.contains("_")) {
                    subclassName = new StringBuilder(staticFieldName.substring(0, 1).toUpperCase() +
                            staticFieldName.substring(1).toLowerCase());
                } else {
                    subclassName = new StringBuilder();
                    StringTokenizer tokenizer = new StringTokenizer(staticFieldName, "_");
                    while (tokenizer.hasMoreTokens()) {
                        String tempName = tokenizer.nextToken().toLowerCase();
                        subclassName.append(tempName.subSequence(0, 1).toString().toUpperCase())
                                .append(tempName.subSequence(1, tempName.length()).toString());
                    }
                }
                if (inheritanceTreeMatchingWithStaticTypes != null) {
                    subclassNames.add(staticFieldSubclassTypeMap.get(simpleName));
                } else if (existingInheritanceTree != null) {
                    DefaultMutableTreeNode root = existingInheritanceTree.getRootNode();
                    DefaultMutableTreeNode leaf = root.getFirstLeaf();
                    while (leaf != null) {
                        String childClassName = (String) leaf.getUserObject();
                        if (childClassName.endsWith(subclassName.toString())) {
                            subclassNames.add(childClassName);
                            break;
                        } else if (castingType != null && castingType.getCanonicalText().equals(childClassName)) {
                            subclassNames.add(childClassName);
                            break;
                        }
                        leaf = leaf.getNextLeaf();
                    }
                } else if (castingType != null) {
                    subclassNames.add(castingType.getCanonicalText());
                } else {
                    subclassNames.add(subclassName.toString());
                }
            }
        }
        List<PsiType> typeGroup = subclassTypeMap.get(expression);
        if (typeGroup != null) {
            for (PsiType type : typeGroup)
                subclassNames.add(type.getCanonicalText());
        }
    }
    return subclassNames;
}
 
源代码14 项目: IntelliJDeodorant   文件: TypeCheckElimination.java
public boolean isTypeCheckMethodStateSetter() {
    InheritanceTree tree = null;
    if (existingInheritanceTree != null)
        tree = existingInheritanceTree;
    else if (inheritanceTreeMatchingWithStaticTypes != null)
        tree = inheritanceTreeMatchingWithStaticTypes;
    if (tree != null) {
        DefaultMutableTreeNode root = tree.getRootNode();
        DefaultMutableTreeNode leaf = root.getFirstLeaf();
        List<String> subclassNames = new ArrayList<>();
        while (leaf != null) {
            subclassNames.add((String) leaf.getUserObject());
            leaf = leaf.getNextLeaf();
        }
        PsiCodeBlock typeCheckMethodBody = getTypeCheckMethod().getBody();
        if (typeCheckMethodBody != null && typeCheckMethodBody.getStatements().length > 0
                && typeCheckMethodBody.getStatements()[0] instanceof PsiSwitchStatement) {
            PsiStatement[] statements = typeCheckMethodBody.getStatements();
            PsiSwitchStatement switchStatement = (PsiSwitchStatement) statements[0];
            PsiCodeBlock switchStatementBody = switchStatement.getBody();
            if (switchStatementBody != null) {
                ExpressionExtractor expressionExtractor = new ExpressionExtractor();
                int matchCounter = 0;
                for (PsiStatement psiStatement : switchStatementBody.getStatements()) {
                    if (!(psiStatement instanceof PsiSwitchLabelStatement) && !(psiStatement instanceof PsiBreakStatement)) {
                        List<PsiExpression> classInstanceCreations = expressionExtractor.getClassInstanceCreations(psiStatement);
                        if (classInstanceCreations.size() == 1) {
                            PsiNewExpression classInstanceCreation = (PsiNewExpression) classInstanceCreations.get(0);
                            if (classInstanceCreation.getClassReference() != null) {
                                String classInstanceCreationType = classInstanceCreation.getClassReference().getQualifiedName();
                                if (subclassNames.contains(classInstanceCreationType)) {
                                    matchCounter++;
                                }
                            }
                        }
                    }
                }
                return matchCounter == subclassNames.size();
            }
        }
    }
    return false;
}
 
源代码15 项目: IntelliJDeodorant   文件: SystemObject.java
private void inheritanceHierarchyMatchingWithStaticTypes(TypeCheckElimination typeCheckElimination,
                                                         CompleteInheritanceDetection inheritanceDetection) {
    List<PsiField> staticFields = typeCheckElimination.getStaticFields();
    String abstractClassType = typeCheckElimination.getAbstractClassType();
    InheritanceTree tree = null;
    if (abstractClassType != null) {
        tree = inheritanceDetection.getTree(abstractClassType);
    }
    if (tree != null) {
        DefaultMutableTreeNode rootNode = tree.getRootNode();
        DefaultMutableTreeNode leaf = rootNode.getFirstLeaf();
        List<String> inheritanceHierarchySubclassNames = new ArrayList<>();
        while (leaf != null) {
            inheritanceHierarchySubclassNames.add((String) leaf.getUserObject());
            leaf = leaf.getNextLeaf();
        }
        int matchCounter = 0;
        for (PsiField staticField : staticFields) {
            for (String subclassName : inheritanceHierarchySubclassNames) {
                ClassObject classObject = getClassObject(subclassName);
                PsiElement abstractTypeDeclaration = classObject.getAbstractTypeDeclaration();
                if (abstractTypeDeclaration instanceof PsiClass) {
                    PsiClass typeDeclaration = (PsiClass) abstractTypeDeclaration;
                    PsiDocComment javadoc = typeDeclaration.getDocComment();
                    if (javadoc != null) {
                        PsiDocTag[] tagElements = javadoc.getTags();
                        for (PsiDocTag tagElement : tagElements) {
                            tagElement.getName();
                            if ("see".equals(tagElement.getName())) {
                                PsiElement[] fragments = tagElement.getDataElements();
                                for (PsiElement fragment : fragments) {
                                    if (!(fragment instanceof PsiDocMethodOrFieldRef)) {
                                        continue;
                                    }
                                    PsiReference memberRef = fragment.getReference();
                                    if (memberRef == null) {
                                        continue;
                                    }
                                    PsiElement resolvedRef = memberRef.resolve();
                                    if (staticField.equals(resolvedRef)) {
                                        typeCheckElimination.putStaticFieldSubclassTypeMapping(staticField, subclassName);
                                        matchCounter++;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (matchCounter == staticFields.size()) {
            typeCheckElimination.setInheritanceTreeMatchingWithStaticTypes(tree);
        }
    }
}
 
源代码16 项目: JDeodorant   文件: SystemObject.java
private void inheritanceHierarchyMatchingWithStaticTypes(TypeCheckElimination typeCheckElimination,
		CompleteInheritanceDetection inheritanceDetection) {
	List<SimpleName> staticFields = typeCheckElimination.getStaticFields();
	String abstractClassType = typeCheckElimination.getAbstractClassType();
	InheritanceTree tree = null;
	if(abstractClassType != null)
		tree = inheritanceDetection.getTree(abstractClassType);
	if(tree != null) {
		DefaultMutableTreeNode rootNode = tree.getRootNode();
		DefaultMutableTreeNode leaf = rootNode.getFirstLeaf();
		List<String> inheritanceHierarchySubclassNames = new ArrayList<String>();
		while(leaf != null) {
			inheritanceHierarchySubclassNames.add((String)leaf.getUserObject());
			leaf = leaf.getNextLeaf();
		}
		int matchCounter = 0;
		for(SimpleName staticField : staticFields) {
			for(String subclassName : inheritanceHierarchySubclassNames) {
				ClassObject classObject = getClassObject(subclassName);
				AbstractTypeDeclaration abstractTypeDeclaration = classObject.getAbstractTypeDeclaration();
				if(abstractTypeDeclaration instanceof TypeDeclaration) {
					TypeDeclaration typeDeclaration = (TypeDeclaration)abstractTypeDeclaration;
					Javadoc javadoc = typeDeclaration.getJavadoc();
					if(javadoc != null) {
						List<TagElement> tagElements = javadoc.tags();
						for(TagElement tagElement : tagElements) {
							if(tagElement.getTagName() != null && tagElement.getTagName().equals(TagElement.TAG_SEE)) {
								List<ASTNode> fragments = tagElement.fragments();
								for(ASTNode fragment : fragments) {
									if(fragment instanceof MemberRef) {
										MemberRef memberRef = (MemberRef)fragment;
										IBinding staticFieldNameBinding = staticField.resolveBinding();
										ITypeBinding staticFieldNameDeclaringClass = null;
										if(staticFieldNameBinding != null && staticFieldNameBinding.getKind() == IBinding.VARIABLE) {
											IVariableBinding staticFieldNameVariableBinding = (IVariableBinding)staticFieldNameBinding;
											staticFieldNameDeclaringClass = staticFieldNameVariableBinding.getDeclaringClass();
										}
										if(staticFieldNameBinding.getName().equals(memberRef.getName().getIdentifier()) &&
												staticFieldNameDeclaringClass.getQualifiedName().equals(memberRef.getQualifier().getFullyQualifiedName())) {
											typeCheckElimination.putStaticFieldSubclassTypeMapping(staticField, subclassName);
											matchCounter++;
											break;
										}
									}
								}
							}
						}
					}
				}
			}
		}
		if(matchCounter == staticFields.size()) {
			typeCheckElimination.setInheritanceTreeMatchingWithStaticTypes(tree);
			return;
		}
	}
}
 
private boolean typeObjectGetterMethodAlreadyExists() {
	InheritanceTree tree = typeCheckElimination.getInheritanceTreeMatchingWithStaticTypes();
	if(tree != null) {
		MethodDeclaration[] contextMethods = sourceTypeDeclaration.getMethods();
		DefaultMutableTreeNode rootNode = tree.getRootNode();
		String rootClassName = (String)rootNode.getUserObject();
		DefaultMutableTreeNode leaf = rootNode.getFirstLeaf();
		List<String> subclassNames = new ArrayList<String>();
		while(leaf != null) {
			subclassNames.add((String)leaf.getUserObject());
			leaf = leaf.getNextLeaf();
		}
		for(MethodDeclaration contextMethod : contextMethods) {
			Type returnType = contextMethod.getReturnType2();
			if(returnType != null) {
				if(returnType.resolveBinding().getQualifiedName().equals(rootClassName)) {
					Block contextMethodBody = contextMethod.getBody();
					if(contextMethodBody != null) {
						List<Statement> statements = contextMethodBody.statements();
						if(statements.size() > 0 && statements.get(0) instanceof SwitchStatement) {
							SwitchStatement switchStatement = (SwitchStatement)statements.get(0);
							List<Statement> statements2 = switchStatement.statements();
							int matchCounter = 0;
							for(Statement statement2 : statements2) {
								if(statement2 instanceof ReturnStatement) {
									ReturnStatement returnStatement = (ReturnStatement)statement2;
									Expression returnStatementExpression = returnStatement.getExpression();
									if(returnStatementExpression instanceof ClassInstanceCreation) {
										ClassInstanceCreation classInstanceCreation = (ClassInstanceCreation)returnStatementExpression;
										Type classInstanceCreationType = classInstanceCreation.getType();
										if(subclassNames.contains(classInstanceCreationType.resolveBinding().getQualifiedName())) {
											matchCounter++;
										}
									}
								}
							}
							if(matchCounter == subclassNames.size())
								return true;
						}
					}
				}
			}
		}
	}
	return false;
}
 
源代码18 项目: JDeodorant   文件: TypeCheckElimination.java
public List<String> getSubclassNames() {
	List<String> subclassNames = new ArrayList<String>();
	for(Expression expression : typeCheckMap.keySet()) {
		List<SimpleName> simpleNameGroup = staticFieldMap.get(expression);
		if(simpleNameGroup != null) {
			for(SimpleName simpleName : simpleNameGroup) {
				String staticFieldName = simpleName.getIdentifier();
				Type castingType = getCastingType(typeCheckMap.get(expression));
				String subclassName = null;
				if(!staticFieldName.contains("_")) {
					subclassName = staticFieldName.substring(0, 1).toUpperCase() + 
					staticFieldName.substring(1, staticFieldName.length()).toLowerCase();
				}
				else {
					subclassName = "";
					StringTokenizer tokenizer = new StringTokenizer(staticFieldName,"_");
					while(tokenizer.hasMoreTokens()) {
						String tempName = tokenizer.nextToken().toLowerCase().toString();
						subclassName += tempName.subSequence(0, 1).toString().toUpperCase() + 
						tempName.subSequence(1, tempName.length()).toString();
					}
				}
				if(inheritanceTreeMatchingWithStaticTypes != null) {
					subclassNames.add(staticFieldSubclassTypeMap.get(simpleName));
				}
				else if(existingInheritanceTree != null) {
					DefaultMutableTreeNode root = existingInheritanceTree.getRootNode();
					DefaultMutableTreeNode leaf = root.getFirstLeaf();
					while(leaf != null) {
						String childClassName = (String)leaf.getUserObject();
						if(childClassName.endsWith(subclassName)) {
							subclassNames.add(childClassName);
							break;
						}
						else if(castingType != null && castingType.resolveBinding().getQualifiedName().equals(childClassName)) {
							subclassNames.add(childClassName);
							break;
						}
						leaf = leaf.getNextLeaf();
					}
				}
				else if(castingType != null) {
					subclassNames.add(castingType.resolveBinding().getQualifiedName());
				}
				else {
					subclassNames.add(subclassName);
				}
			}
		}
		List<Type> typeGroup = subclassTypeMap.get(expression);
		if(typeGroup != null) {
			for(Type type : typeGroup)
				subclassNames.add(type.resolveBinding().getQualifiedName());
		}
	}
	return subclassNames;
}