Skip to content

Fix/non latin author parsed as name prefix#15823

Merged
calixtus merged 9 commits into
JabRef:mainfrom
madhav758:fix/non-latin-author-parsed-as-namePrefix
May 27, 2026
Merged

Fix/non latin author parsed as name prefix#15823
calixtus merged 9 commits into
JabRef:mainfrom
madhav758:fix/non-latin-author-parsed-as-namePrefix

Conversation

@madhav758

Copy link
Copy Markdown
Contributor

Related issues and pull requests

Closes #15813

PR Description

Fixed incorrect parsing of author names from caseless scripts (Hindi, Arabic,Thai, Hebrew, etc.) in AuthorListParser.
The parser was classifying these tokens as von particles due to Character.isUpperCase() returning false for scripts with
no case distinction, causing familyName to be null and namePrefix to be wrongly populated. Added Character.getType(c) != Character.LOWERCASE_LETTER , which correctly treats all caseless scripts.

Steps to test

run ./gradlew :jablib:test --tests "org.jabref.logic.importer.AuthorListParserTest"
Screenshot 2026-05-23 at 11 28 42 PM

Screenshot 2026-05-23 at 11 29 03 PM Screenshot 2026-05-23 at 11 29 46 PM

Checklist

  • I own the copyright of the code submitted and I license it under the MIT license
  • I manually tested my changes in running JabRef (always required)
  • I added JUnit tests for changes (if applicable)
  • I added screenshots in the PR description (if change is visible to the user)
  • I added a screenshot in the PR description showing a library with a single entry with me as author and as title the issue number
  • I described the change in CHANGELOG.md in a way that can be understood by the average user (if change is visible to the user)
  • I checked the user documentation for up to dateness and submitted a pull request to our user documentation repository

Copilot AI review requested due to automatic review settings May 24, 2026 10:43
@qodo-free-for-open-source-projects

Copy link
Copy Markdown
Contributor

Review Summary by Qodo

Fix non-Latin caseless author names parsed as namePrefix

🐞 Bug fix

Grey Divider

Walkthroughs

Description
• Fixed non-Latin caseless script author names incorrectly parsed as namePrefix
• Added Unicode character type check to distinguish caseless scripts from lowercase
• Enhanced AuthorListParser to properly handle Hindi, Arabic, Thai, Hebrew scripts
• Added test cases for Hindi and Arabic author name parsing
Diagram
flowchart LR
  A["AuthorListParser<br/>tokenCase detection"] -->|"Added Character.getType<br/>check for caseless scripts"| B["Proper handling of<br/>non-Latin scripts"]
  B -->|"Distinguishes caseless<br/>from lowercase"| C["Correct familyName<br/>assignment"]
  C -->|"Prevents wrong<br/>namePrefix population"| D["Fixed author parsing<br/>for Hindi, Arabic, Thai"]

Loading

File Changes

1. jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java 🐞 Bug fix +11/-30

Add Unicode character type check for caseless scripts

• Modified tokenCase assignment logic to add Character.getType(c) != Character.LOWERCASE_LETTER
 check for caseless scripts
• This prevents non-Latin characters without case distinction from being incorrectly classified as
 lowercase particles
• Reformatted code alignment for AVOID_TERMS_IN_LOWER_CASE and TEX_NAMES constants
• Consolidated multi-line JavaDoc comments to single lines for improved readability

jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java


2. jablib/src/test/java/org/jabref/logic/importer/AuthorListParserTest.java 🧪 Tests +2/-0

Add Hindi and Arabic author parsing tests

• Added test case for Hindi author name parsing: "हिंदी, परीक्षण"
• Added test case for Arabic author name parsing: "العربية, اختبار"
• Both test cases verify correct familyName and firstName assignment for non-Latin caseless scripts

jablib/src/test/java/org/jabref/logic/importer/AuthorListParserTest.java


3. CHANGELOG.md 📝 Documentation +1/-0

Document non-Latin author parsing fix

• Added entry documenting the fix for non-Latin caseless author names being parsed as namePrefix
• References issue #15813 with proper GitHub issue link

CHANGELOG.md


Grey Divider

Qodo Logo

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented May 24, 2026

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider


Remediation recommended

1. AuthorListParser formatting-only changes ✓ Resolved 📘 Rule violation ⚙ Maintainability
Description
Several changes in AuthorListParser appear to be formatting-only (notably unusually wide
indentation in Set.of(...) declarations and comment/Javadoc reflow) and unrelated to the
functional fix, creating noisy diffs and reducing readability. This violates the requirement to
avoid reformatting and keep changes minimal and consistent with the existing style.
Code

jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[R24-25]

Evidence
PR Compliance requires avoiding reformatting unless the surrounding code is being changed and
keeping changes minimal; the cited regions in AuthorListParser show indentation-only changes in
Set.of(...) constants (including atypically wide continuation indentation before the first string
literal) as well as comment/Javadoc reflow into long single lines, which are not necessary for the
functional fix. The widened indentation is also inconsistent with the prevailing continuation
indentation style used elsewhere in the repository (e.g., other files such as ConferenceUtils).

AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed: AGENTS.md: Do not reformat code unless the surrounding code is being changed
AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal: AGENTS.md: Follow existing code style, formatting, naming conventions, and keep changes minimal
jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[23-25]
jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[36-38]
jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[111-116]
jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[420-426]
jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[23-26]
jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[36-39]
jablib/src/main/java/org/jabref/logic/icore/ConferenceUtils.java[28-31]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`AuthorListParser.java` includes formatting-only changes (especially unusually wide indentation in `Set.of(...)` declarations and comment/Javadoc reflow) that are not required for the behavioral fix, creating unnecessary diff noise and deviating from the existing formatting style.
## Issue Context
The PR’s functional change is in token case detection, but multiple unrelated formatting edits were introduced, including re-indentation of the `AVOID_TERMS_IN_LOWER_CASE` and `TEX_NAMES` `Set.of(...)` constants and reflow of comments/Javadoc into long single lines. These should be reverted or adjusted back to the standard continuation indentation used across the codebase to reduce churn and improve readability.
## Fix Focus Areas
- jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[23-26]
- jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[36-39]
- jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[111-116]
- jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[200-201]
- jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[420-426]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. CHANGELOG mentions namePrefix ✓ Resolved 📘 Rule violation ⚙ Maintainability
Description
The new changelog bullet is written with internal implementation terms (e.g., namePrefix,
familyName) and starts with lowercase “we,” which makes it less end-user focused and inconsistent
with the existing - We ... capitalization/style used in surrounding entries. This violates the
changelog requirement for user-oriented language and consistent formatting in release notes.
Code

CHANGELOG.md[37]

Evidence
PR compliance expects CHANGELOG entries to be understandable to end users and to follow established
formatting conventions in the file. In the ### Fixed section, adjacent bullets consistently begin
with - We fixed ..., but the newly added line begins with - we fixed ..., demonstrating the
capitalization inconsistency; additionally, the same bullet includes internal field names like
namePrefix and familyName, showing it is framed in implementation terms rather than user-facing
language.

AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines: AGENTS.md: CHANGELOG entries: only for user-visible changes, written for end users, with no extra blank lines
CHANGELOG.md[33-38]
CHANGELOG.md[31-38]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The added `CHANGELOG.md` entry is not end-user oriented (it uses internal implementation terminology like `namePrefix`/`familyName`) and it breaks the existing bullet style by starting with lowercase “we” instead of matching the surrounding `- We ...` capitalization.
## Issue Context
This is user-facing release-note text in the `### Fixed` section; surrounding bullets consistently start with `- We fixed ...` and avoid internal code-level field names. The current entry uses lowercase `we` and references internal terms (`namePrefix`, `familyName`), making it inconsistent with the established changelog style and less readable for end users.
## Fix Focus Areas
- CHANGELOG.md[31-38]
- CHANGELOG.md[37-37]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Misleading tokenCase logic ✓ Resolved 🐞 Bug ⚙ Maintainability
Description
getToken() now sets tokenCase true for any letter that is not in Unicode category
LOWERCASE_LETTER, which no longer matches the in-file documentation (“true if upper-case token”)
and makes the condition redundant/unclear. This increases the risk of future incorrect changes
because tokenCase drives von/last-name splitting decisions.
Code

jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[469]

Evidence
The file documents tokenCase as upper/lower-case, but the new assignment makes it true for any
letter not categorized as LOWERCASE_LETTER. This directly affects the von/last-name index
selection logic, which branches on tokenCase.

jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[54-57]
jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[467-475]
jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[230-276]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`tokenCase` is documented as “true if upper-case token, false if lower-case”, but the new condition effectively treats **any non-lowercase letter** (including caseless scripts) as `true`. The current expression is also redundant: under the existing `Character.isLetter(c)` guard, `Character.getType(c) != Character.LOWERCASE_LETTER` already covers upper-case and Han, making `isUpperCase`/`HAN` checks unnecessary.
### Issue Context
`tokenCase` is later used to decide whether a token starts the “von part” (`!tokenCase`) and where the last name begins (`tokenCase`), so readability and correct semantics matter.
### Fix Focus Areas
- jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[54-57]
- jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[467-475]
- jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java[230-276]
### Suggested change
- Replace the assignment with something explicit and self-documenting, e.g.:
- `tokenCase = !Character.isLowerCase(c);`
- or keep `getType` but simplify to: `tokenCase = Character.getType(c) != Character.LOWERCASE_LETTER;`
- Update the field comment to match the new semantics, e.g. “true if token does not start with a lowercase letter (uppercase/caseless)”.
- (Optional) add a small comment explaining the caseless-script rationale so the intent is preserved.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Expands author parsing support for non‑Latin/caseless scripts (e.g., Hindi/Arabic) and adds regression coverage, along with a changelog entry.

Changes:

  • Add test cases for Hindi and Arabic “Family, Given” parsing.
  • Treat non‑Latin/caseless scripts as “upper-case-like” during tokenization to avoid misclassifying name parts.
  • Document the fix in CHANGELOG.md.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

File Description
jablib/src/test/java/org/jabref/logic/importer/AuthorListParserTest.java Adds regression tests for Hindi/Arabic author parsing.
jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java Adjusts token case detection to better handle caseless scripts; reformats some constants/comments.
CHANGELOG.md Adds an entry describing the parsing fix.

Comment thread jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java Outdated
Comment thread jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java Outdated
Comment thread jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java Outdated
if (!firstLetterIsFound && (currentBackslash < 0) && Character.isLetter(c)) {
if (bracesLevel == 0) {
tokenCase = Character.isUpperCase(c) || (Character.UnicodeScript.of(c) == Character.UnicodeScript.HAN);
tokenCase = Character.isUpperCase(c) || (Character.UnicodeScript.of(c) == Character.UnicodeScript.HAN || (Character.getType(c) != Character.LOWERCASE_LETTER));
Comment thread CHANGELOG.md Outdated
@jabref-machine

Copy link
Copy Markdown
Collaborator

Note that your PR will not be reviewed/accepted until you have gone through the mandatory checks in the description and marked each of them them exactly in the format of - [x] (done), - [ ] (yet to be done) or - [/] (not applicable). Please adhere to our pull request template.

Comment thread jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java Outdated
Comment thread CHANGELOG.md Outdated
@subhramit

subhramit commented May 24, 2026

Copy link
Copy Markdown
Member

Please finish one PR at a time. As we can see, you have not followed up on #15738.
Do also note that filing one more AI generated PR without reviewing the changes may get you banned from the project, as it violates our code of conduct.

P.S. since you already opened this and people have started reviewing, you can continue working on it.

@madhav758

Copy link
Copy Markdown
Contributor Author

@subhramit I understand and apologize. This PR wasnt AI generated i am new to open source and was researching on how to send clean pr i came across code rabbit that reviews pr so that i could fix the small issues before submitting it here. Wont use that again if its not acceptable.
I will focus on finishing the current PRs properly before opening anything new.
thanks for the feedback

Comment thread jablib/src/main/java/org/jabref/logic/importer/AuthorListParser.java Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Your pull request conflicts with the target branch.

Please merge with your code. For a step-by-step guide to resolve merge conflicts, see https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line.

…r.java

Co-authored-by: Dark Blue <hancong0205@gmail.com>
calixtus
calixtus previously approved these changes May 27, 2026
@calixtus calixtus added this pull request to the merge queue May 27, 2026
@github-actions github-actions Bot added the status: to-be-merged PRs which are accepted and should go into the merge-queue. label May 27, 2026
Merged via the queue into JabRef:main with commit a38a32f May 27, 2026
50 checks passed
Siedlerchr added a commit to InAnYan/jabref that referenced this pull request May 28, 2026
* upstream/main: (29 commits)
  Chore(deps): Bump dev.langchain4j:langchain4j-bom in /versions (JabRef#15853)
  Chore(deps): Bump org.glassfish.jaxb:jaxb-runtime in /versions (JabRef#15854)
  Chore(deps): Bump com.gradleup.shadow:shadow-gradle-plugin (JabRef#15852)
  Chore(deps): Bump com.gradleup.shadow:shadow-gradle-plugin (JabRef#15849)
  Chore(deps): Bump com.autonomousapps:dependency-analysis-gradle-plugin (JabRef#15850)
  Update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.5.6 (JabRef#15844)
  Fix reset and import of AiPreferences (JabRef#15843)
  Fix Comparable Contract Violation in SharedBibEntryData (JabRef#15806) (JabRef#15842)
  Chore(deps): Bump com.dlsc.gemsfx:gemsfx from 4.0.5 to 4.1.0 in /versions (JabRef#15841)
  Chore(deps): Bump jablib/src/main/resources/csl-styles (JabRef#15840)
  New Crowdin updates (JabRef#15839)
  Add group pseudonymization support (fixes JabRef#14117) (JabRef#15258)
  Feature parse MeSH terms in PubMed MEDLINE records (JabRef#15529)
  Fix/non latin author parsed as name prefix (JabRef#15823)
  Fix not on fx thread cleanup (JabRef#15835)
  Fix garbled BibEntry Javadoc example (JabRef#15834)
  Revert "Fix cleanup operationn setFiles not on fx thread causes exceptiosn"
  Revert "changelog"
  changelog
  Fix cleanup operationn setFiles not on fx thread causes exceptiosn
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status: changes-required Pull requests that are not yet complete status: to-be-merged PRs which are accepted and should go into the merge-queue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Non-Latin author names (Hindi/Arabic) parsed as namePrefix instead of familyName

6 participants