final String[] tokens = reference.split(Pattern.quote(SEPARATOR));
if (tokens.length != 4)
throw new IllegalArgumentException("InvalidTokensCount: "
+ tokens.length + " for " + tokens);
this.repository = new URIish(tokens[1]);
if (!"".equals(tokens[2])) //$NON-NLS-1$
this.branch = tokens[2];
this.projectDir = tokens[3];
}