TreeHashResult (@NotNull PsiElement root, PsiFragment upper, @NotNull NodeSpecificHasher hasher) { final TreeHashResult result = computeHash(root, upper, hasher); // todo: try to optimize (ex. compute cost and hash separately) final int discardCost = getDiscardCost(root); if (result.getCost() < discardCost) { return new TreeHashResult(0, result.getCost(), result.getFragment()); } return result; }