@Override
    public String toString() {
        StringBuilder string = new StringBuilder();

        string.append("Citation type: ").append(this.citationType).append("\n");

        if (authors != null) {
            string.append("Authors: ");
            for (Author author : this.authors) {
                string.append(author);
                if (authors.indexOf(author) != authors.size() - 1) {
                    string.append(" and ");
                }
            }
            string.append("\n");
        }

        if (this.title != null) {
            string.append("Title: ").append(this.title).append("\n");
        }
        if (this.year != null) {
            string.append("Year: ").append(this.year).append("\n");
        }
        if (this.publisher != null) {
            string.append("Publisher: ").append(this.publisher).append("\n");
        }
        if (this.address != null) {
            string.append("Address: ").append(this.address).append("\n");
        }

        if (tags != null) {
            string.append("Tags: ");
            for (String tag : this.tags) {
                string.append(tag).append(" ");
            }
            string.append("\n");
        }

        return string.toString();
    }