TraceInfo (@NotNull StreamCall call, @NotNull Value value) { if (value instanceof ArrayReference) { final Value peekTrace = ((ArrayReference)value).getValue(0); final Value trace = ((ArrayReference)value).getValue(1); final TraceInfo order = myPeekResolver.resolve(call, peekTrace); final Map<TraceElement, List<TraceElement>> direct = resolve(trace, order, Direction.DIRECT); final Map<TraceElement, List<TraceElement>> reverse = resolve(trace, order, Direction.REVERSE); return new MyDistinctInfo(order, direct, reverse); } throw new UnexpectedValueException("distinct trace must be an array value"); }