public <T2> Query<T2> ofType(final Class<T2> clazz) throws Exception
	{

		return this.where(new Predicate<T>(){

			@Override
			public boolean evaluate(T obj) throws Exception {

				return clazz.isInstance(obj);
			}}).cast(clazz);

	}