boolean isInReference = separator.matches(inReferenceSeparator);\r
\r
//parse subparts\r
- parseFullName(nameToBeFilled, name, rank, makeEmpty);\r
- parseReference(nameToBeFilled, referenceString, isInReference); \r
+ \r
+ int oldProblemEnds = nameToBeFilled.getProblemEnds();\r
+ parseFullName(nameToBeFilled, name, rank, makeEmpty);\r
+ nameToBeFilled.setProblemEnds(oldProblemEnds);\r
+ parseReference(nameToBeFilled, referenceString, isInReference); \r
INomenclaturalReference<?> ref = nameToBeFilled.getNomenclaturalReference();\r
\r
//problem start\r
int nameAndSeparatorLength = nameAndSeparator.length();\r
int fullRefLength = nameToBeFilled.getFullTitleCache().length();\r
\r
- if (nameToBeFilled.isProtectedTitleCache() ){\r
+ if (nameToBeFilled.isProtectedTitleCache() || nameToBeFilled.getRank() == null ){\r
start = Math.max(0, start);\r
}else{\r
if (ref != null && ref.getHasProblem()){\r
}\r
else if (genusOrSupraGenusPattern.matcher(fullNameString).matches()){\r
//supraGeneric\r
- if (rank != null && rank.isSupraGeneric()){\r
+ if (rank != null && (rank.isSupraGeneric()|| rank.isGenus())){\r
nameToBeFilled.setRank(rank);\r
nameToBeFilled.setGenusOrUninomial(epi[0]);\r
} \r