for (int i = 0; i < groupCount; i++) {
lastGroup = m.group(i + 1);
// if null optional.. ignore
if (i == groupCount - 1 && hasOptionalExtension) {
ConstrainedProperty cp = constraints[constraints.length-1];
cp.validate(this, lastGroup, errors);
if (errors.hasErrors()) {
return null;
}