boolean parseOne(List<Comparable<?>> segments, String version, int maxPos, TreeInfo info) {
if (array) {
ArrayList<Comparable<?>> subSegs = new ArrayList<Comparable<?>>();
boolean success = fragments[0].getQualifier().parse(fragments, 0, subSegs, version, maxPos, info);
if (!success || subSegs.isEmpty())
return false;
Comparable<?> padValue = info.getPadValue();
if (padValue != null)
info.setPadValue(null);
else
padValue = getPadValue();
padValue = VersionParser.removeRedundantTrail(segments, padValue);
segments.add(new VersionVector(subSegs.toArray(new Comparable[subSegs.size()]), padValue));
return true;
}
if (fragments[0].getQualifier().parse(fragments, 0, segments, version, maxPos, info)) {
Comparable<?> padValue = getPadValue();
if (padValue != null)
info.setPadValue(padValue);
return true;
}
return false;
}