@NotNull
  @Override
  public Result resolve(@NotNull TraceInfo info) {
    final Map<TraceElement, List<TraceElement>> direct = info.getDirectTrace();
    final Map<TraceElement, List<TraceElement>> reverse = info.getReverseTrace();
    if (direct == null || reverse == null) {
      // TODO: throw correct exception
      throw new RuntimeException();
    }

    return Result.of(direct, reverse);
  }
@NotNull
  @Override
  public Result resolve(@NotNull TraceInfo info)