Task (@NotNull GithubIssueBase issue, @NotNull List<GithubIssueCommentWithHtml> comments) { return new Task() { @NotNull private final String myRepoName = getRepoName(); private final Comment @NotNull [] myComments = ContainerUtil.map2Array(comments, Comment.class, comment -> new GithubComment(comment.getCreatedAt(), comment.getUser().getLogin(), comment.getBodyHtml(), comment.getUser().getAvatarUrl(), comment.getUser().getHtmlUrl())); @Override public boolean isIssue() { return true; } @Override public String getIssueUrl() { return issue.getHtmlUrl(); } @Override public @NlsSafe @NotNull String getId() { return myRepoName + "-" + issue.getNumber(); } @NotNull @Override public String getSummary() { return issue.getTitle(); } @Override public String getDescription() { return issue.getBody(); } @Override public Comment @NotNull [] getComments() { return myComments; } @NotNull @Override public Icon getIcon() { return AllIcons.Vcs.Vendors.Github; } @NotNull @Override public TaskType getType() { return TaskType.BUG; } @Override public Date getUpdated() { return issue.getUpdatedAt(); } @Override public Date getCreated() { return issue.getCreatedAt(); } @Override public boolean isClosed() { return issue.getState() == GithubIssueState.closed; } @Override public TaskRepository getRepository() { return GithubRepository.this; } @Override public String getPresentableName() { return getId() + ": " + getSummary(); } }; }