@NotNull
  private MergeCheckResult checkPathGoingUp(final long revisionAsked,
                                            final long targetRevision,
                                            @NotNull String branchRootPath,
                                            @NotNull String path,
                                            final String trunkUrl,
                                            final boolean self) throws VcsException {
    MergeCheckResult result;
    final File pathFile = new File(path);

    // we didn't find existing item on the path jet
    // check whether we locally have path
    if (targetRevision == -1 && !pathFile.exists()) {
      result = goUp(revisionAsked, targetRevision, branchRootPath, path, trunkUrl);
    }
    else {
      final Info svnInfo = myVcs.getInfo(pathFile);
      if (svnInfo == null || svnInfo.getUrl() == null) {
        LOG.info("Svninfo for " + pathFile + " is null or not full.");
        result = MergeCheckResult.NOT_MERGED;
      }
      else {
        final long actualRevision = svnInfo.getRevision().getNumber();
        final long targetRevisionCorrected = (targetRevision == -1) ? actualRevision : targetRevision;

        // here we know local URL and revision

        // check existing info
        final String keyString = path + "@" + targetRevisionCorrected;
        final Set<Long> selfInfo = self ? myNonInheritablePathMergedMap.get(keyString) : null;
        final Set<Long> mergeInfo = myPathMergedMap.get(keyString);
        if (mergeInfo != null || selfInfo != null) {
          boolean merged = mergeInfo != null && mergeInfo.contains(revisionAsked) || selfInfo != null && selfInfo.contains(revisionAsked);
          // take from self or first parent with info; do not go further
          result = MergeCheckResult.getInstance(merged);
        }
        else {
          if (actualRevision != targetRevisionCorrected) {
            myMixedRevisionsFound = true;
          }

          Target target;
          Revision revision;
          if (actualRevision == targetRevisionCorrected) {
            // look in WC
            target = Target.on(pathFile, Revision.WORKING);
            revision = Revision.WORKING;
          }
          else {
            // in repo
            target = Target.on(svnInfo.getUrl());
            revision = Revision.of(targetRevisionCorrected);
          }

          PropertyValue mergeinfoProperty =
            myVcs.getFactory(target).createPropertyClient().getProperty(target, SvnPropertyKeys.MERGE_INFO, false, revision);

          result = mergeinfoProperty == null
                   ? goUp(revisionAsked, targetRevisionCorrected, branchRootPath, path, trunkUrl)
                   : processMergeinfoProperty(keyString, revisionAsked, mergeinfoProperty, trunkUrl, self);
        }
      }
    }

    return result;
  }
@NotNull
  private MergeCheckResult checkPathGoingUp(final long revisionAsked,
                                            final long targetRevision,
                                            @NotNull String branchRootPath,
                                            @NotNull String path,
                                            final String trunkUrl,
                                            final boolean self)