public void trySolveSomehow() {
    try {
      assert !myNotExact.isEmpty();
      for (final SplitHunk hunk : myNotExact) {
        hunk.cutSameTail();
        if (!testForPartialContextMatch(hunk, new LongTryMismatchSolver(hunk), ourMaxWalk, null)) {
          if (complementIfShort(hunk)) {
            if (!testForPartialContextMatch(hunk, new LongTryMismatchSolver(hunk), ourMaxWalk, null)) {
              myNotBound.add(hunk);
            }
          }
          else {
            myNotBound.add(hunk);
          }
        }
      }

      myNotBound.sort(HunksComparator.getInstance());
      myNotExact.clear();
      return;
    }
    catch (ProcessCanceledException e) {
      throw e;
    }
    catch (Throwable e) {
      LOG.error(e); // GenericPatchApplier is buggy, limit AIOOB impact on user
    }

    // fallback root on internal error
    resetToFallbackStateOnError(true);
  }
public void trySolveSomehow()