class References implements Parcelable, Iterable<Reference<T>> {

	public static <S extends Propoid> References<S> from(List<S> propoids) {

		Class<? extends Propoid> type = null;

		long[] ids = new long[propoids.size()];
		for (int i = 0; i < ids.length; i++) {
			S propoid = propoids.get(i);

			ids[i] = Row.getID(propoid);
			if (ids[i] == Row.TRANSIENT) {
				throw new IllegalArgumentException("cannot reference transient propoid");
			}
			type = propoid.getClass();
		}

		if (type == null) {
			return new References();
		} else {
			return new References<S>((Class<? extends S>) type, ids);
		}
	}

	public  References();
	public  References(Class<? extends T> type, long[] ids);

}