class Reference {

	@SuppressWarnings("unchecked")
	public static <P extends Propoid> Reference<P> from(String string) {
		try {
			Matcher matcher = Pattern.compile("propoid://(.*)/(.*)/(.*)").matcher(
					string);
			if (matcher.matches()) {
				Class<P> type = (Class<P>) Class.forName(matcher.group(1) + "." +
						 matcher.group(2));
				long id = Long.parseLong(matcher.group(3));

				return new Reference<P>(type, id);
			}
		} catch (Exception noReference) {
		}
		return null;
	}

	@SuppressWarnings("unchecked") public  Reference(P propoid);
	public  Reference(Class<? extends P> type, long id);

}