package com.intellij.dupLocator.treeHash; import com.intellij.dupLocator.NodeSpecificHasher; import com.intellij.dupLocator.util.PsiFragment; import com.intellij.psi.PsiElement; import java.util.List; /** * @author oleg */ public class TreePsiFragment extends PsiFragment { private final NodeSpecificHasher myHasher; public TreePsiFragment(final NodeSpecificHasher hasher, final PsiElement root, final int cost) { super(root, cost); myHasher = hasher; } public TreePsiFragment(final NodeSpecificHasher hasher, final List<? extends PsiElement> element, final int from, final int to) { super(element, from, to); myHasher = hasher; } public boolean isEqual(PsiElement[] elements, int discardCost) { if (elements.length != myElementAnchors.length) { return false; } for (int i = 0; i < myElementAnchors.length; i++) { PsiElement one = myElementAnchors[i].retrieve(); PsiElement two = elements[i]; if (one == null || two == null || !myHasher.areTreesEqual(one, two, discardCost)) { return false; } } return true; } }