@@ -0,0 +1,1907 @@
+package ui;%0A%0Aimport backend.resource.TurboIssue;%0Aimport backend.resource.TurboLabel;%0Aimport backend.resource.TurboMilestone;%0Aimport backend.resource.TurboUser;%0A%0Aimport java.util.List;%0Aimport java.util.Optional;%0Aimport java.util.stream.Collectors;%0A%0Apublic class GUIElement %7B%0A    private TurboIssue issue;%0A    private List%3CTurboLabel%3E labels;%0A    private Optional%3CTurboMilestone%3E milestone;%0A    private Optional%3CTurboUser%3E assignee;%0A%0A    public GUIElement(TurboIssue issue,%0A                      List%3CTurboLabel%3E labels,%0A                      Optional%3CTurboMilestone%3E milestone,%0A                      Optional%3CTurboUser%3E assignee) %7B%0A        this.issue = issue;%0A        this.labels = labels;%0A        this.milestone = milestone;%0A        this.assignee = assignee;%0A    %7D%0A%0A    public TurboIssue getIssue() %7B%0A        return issue;%0A    %7D%0A%0A    /**%0A     * Returns all labels related to an issue (including labels that have been added and then removed).%0A     * Use getLabelsOfIssue to retrieve an issue's current labels instead.%0A     *%0A     * @return Labels related to an issue, or null if the GUIElement has been constructed as such.%0A     */%0A    public List%3CTurboLabel%3E getLabels() %7B%0A        return labels;%0A    %7D%0A%0A    public Optional%3CTurboMilestone%3E getMilestone() %7B%0A        return milestone;%0A    %7D%0A%0A    public Optional%3CTurboUser%3E getAssignee() %7B%0A        return assignee;%0A    %7D%0A%0A    public Optional%3CTurboLabel%3E getLabelByActualName(String actualName) %7B%0A        return labels.stream().filter(label -%3E label.getActualName().equals(actualName)).findFirst();%0A    %7D%0A%0A    public List%3CTurboLabel%3E getLabelsOfIssue(TurboIssue issue) %7B%0A        return issue.getLabels().stream().map(labelName -%3E %7B%0A            Optional%3CTurboLabel%3E label = getLabelByActualName(labelName); // O(n%5E2) for the additional assert.%0A            assert label.isPresent();%0A            return label.get();%0A        %7D).collect(Collectors.toList());%0A    %7D%0A%7D%0A

Create GUIElement class