SLING-7955 - formatting update.
diff --git a/src/main/java/org/apache/sling/query/AbstractQuery.java b/src/main/java/org/apache/sling/query/AbstractQuery.java
index 9e3dcb5..0b410c9 100644
--- a/src/main/java/org/apache/sling/query/AbstractQuery.java
+++ b/src/main/java/org/apache/sling/query/AbstractQuery.java
@@ -62,753 +62,827 @@
 @ProviderType
 public abstract class AbstractQuery<T, Q extends AbstractQuery<T, Q>> implements Iterable<T> {
 
-	protected final List<Function<?, ?>> functions = new ArrayList<>();
+    protected final List<Function<?, ?>> functions = new ArrayList<>();
 
-	private final List<T> initialCollection;
+    private final List<T> initialCollection;
 
-	private final SearchStrategy searchStrategy;
+    private final SearchStrategy searchStrategy;
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	AbstractQuery(TreeProvider<T> provider, T[] initialCollection, SearchStrategy strategy) {
-		this.provider = provider;
-		this.initialCollection = new ArrayList<>(Arrays.asList(initialCollection));
-		this.searchStrategy = strategy;
-	}
+    AbstractQuery(TreeProvider<T> provider, T[] initialCollection, SearchStrategy strategy) {
+        this.provider = provider;
+        this.initialCollection = new ArrayList<>(Arrays.asList(initialCollection));
+        this.searchStrategy = strategy;
+    }
 
-	protected AbstractQuery(AbstractQuery<T, Q> original, SearchStrategy searchStrategy) {
-		this.functions.addAll(original.functions);
-		this.initialCollection = new ArrayList<>(original.initialCollection);
-		this.searchStrategy = searchStrategy;
-		this.provider = original.provider;
-	}
+    protected AbstractQuery(AbstractQuery<T, Q> original, SearchStrategy searchStrategy) {
+        this.functions.addAll(original.functions);
+        this.initialCollection = new ArrayList<>(original.initialCollection);
+        this.searchStrategy = searchStrategy;
+        this.provider = original.provider;
+    }
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public Iterator<T> iterator() {
-		IteratorToIteratorFunction<T> f = new CompositeFunction<>(functions);
-		Iterator<Option<T>> iterator = f.apply(new OptionDecoratingIterator<>(initialCollection.iterator()));
-		iterator = new EmptyElementFilter<>(iterator);
-		return new OptionStrippingIterator<>(iterator);
-	}
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Iterator<T> iterator() {
+        IteratorToIteratorFunction<T> f = new CompositeFunction<>(functions);
+        Iterator<Option<T>> iterator = f.apply(new OptionDecoratingIterator<>(initialCollection.iterator()));
+        iterator = new EmptyElementFilter<>(iterator);
+        return new OptionStrippingIterator<>(iterator);
+    }
 
-	public Stream<T> stream() {
-		return StreamSupport.stream(this.spliterator(), false);
-	}
+    public Stream<T> stream() {
+        return StreamSupport.stream(this.spliterator(), false);
+    }
 
-	/**
-	 * Include resources to the collection.
-	 * 
-	 * @param resources Resources to include
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q add(T... resources) {
-		return function(new AddFunction<>(Arrays.asList(resources)));
-	}
+    /**
+     * Include resources to the collection.
+     * 
+     * @param resources
+     *            Resources to include
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q add(T... resources) {
+        return function(new AddFunction<>(Arrays.asList(resources)));
+    }
 
-	/**
-	 * Include resources to the collection.
-	 * 
-	 * @param iterable Resources to include
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q add(Iterable<T> iterable) {
-		return function(new AddFunction<>(iterable));
-	}
+    /**
+     * Include resources to the collection.
+     * 
+     * @param iterable
+     *            Resources to include
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q add(Iterable<T> iterable) {
+        return function(new AddFunction<>(iterable));
+    }
 
-	/**
-	 * Transform SlingQuery collection into a lazy list.
-	 * 
-	 * @return List containing all elements from the collection.
-	 */
-	public List<T> asList() {
-		return new LazyList<>(iterator());
-	}
+    /**
+     * Transform SlingQuery collection into a lazy list.
+     * 
+     * @return List containing all elements from the collection.
+     */
+    public List<T> asList() {
+        return new LazyList<>(iterator());
+    }
 
-	/**
-	 * Get list of the children for each Resource in the collection.
-	 * 
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q children() {
-		return function(new ChildrenFunction<>(provider));
-	}
+    /**
+     * Get list of the children for each Resource in the collection.
+     * 
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q children() {
+        return function(new ChildrenFunction<>(provider));
+    }
 
-	/**
-	 * Get list of the children for each Resource in the collection.
-	 * 
-	 * @param filter Children filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q children(String filter) {
-		return function(new ChildrenFunction<>(provider), filter);
-	}
+    /**
+     * Get list of the children for each Resource in the collection.
+     * 
+     * @param filter
+     *            Children filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q children(String filter) {
+        return function(new ChildrenFunction<>(provider), filter);
+    }
 
-	/**
-	 * Get list of the children for each Resource in the collection.
-	 * 
-	 * @param filter Children filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q children(Predicate<T> filter) {
-		return function(new ChildrenFunction<>(provider), filter);
-	}
+    /**
+     * Get list of the children for each Resource in the collection.
+     * 
+     * @param filter
+     *            Children filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q children(Predicate<T> filter) {
+        return function(new ChildrenFunction<>(provider), filter);
+    }
 
-	/**
-	 * Get list of the children for each Resource in the collection.
-	 * 
-	 * @param filter Children filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q children(Iterable<T> filter) {
-		return function(new ChildrenFunction<>(provider), filter);
-	}
+    /**
+     * Get list of the children for each Resource in the collection.
+     * 
+     * @param filter
+     *            Children filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q children(Iterable<T> filter) {
+        return function(new ChildrenFunction<>(provider), filter);
+    }
 
-	/**
-	 * For each Resource in the collection, return the first element matching the selector testing the
-	 * Resource itself and traversing up its ancestors.
-	 * 
-	 * @param selector Ancestor filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q closest(String selector) {
-		return closest(parse(selector));
-	}
+    /**
+     * For each Resource in the collection, return the first element matching the
+     * selector testing the Resource itself and traversing up its ancestors.
+     * 
+     * @param selector
+     *            Ancestor filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q closest(String selector) {
+        return closest(parse(selector));
+    }
 
-	/**
-	 * For each Resource in the collection, return the first element matching the selector testing the
-	 * Resource itself and traversing up its ancestors.
-	 * 
-	 * @param iterable Ancestor filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q closest(Iterable<T> iterable) {
-		return closest(new IterableContainsPredicate<>(iterable, provider));
-	}
+    /**
+     * For each Resource in the collection, return the first element matching the
+     * selector testing the Resource itself and traversing up its ancestors.
+     * 
+     * @param iterable
+     *            Ancestor filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q closest(Iterable<T> iterable) {
+        return closest(new IterableContainsPredicate<>(iterable, provider));
+    }
 
-	/**
-	 * For each Resource in the collection, return the first element matching the selector testing the
-	 * Resource itself and traversing up its ancestors.
-	 * 
-	 * @param predicate Ancestor filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q closest(Predicate<T> predicate) {
-		return function(new ClosestFunction<>(predicate, provider));
-	}
+    /**
+     * For each Resource in the collection, return the first element matching the
+     * selector testing the Resource itself and traversing up its ancestors.
+     * 
+     * @param predicate
+     *            Ancestor filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q closest(Predicate<T> predicate) {
+        return function(new ClosestFunction<>(predicate, provider));
+    }
 
-	/**
-	 * Reduce Resource collection to the one Resource at the given 0-based index.
-	 * 
-	 * @param index 0-based index
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q eq(int index) {
-		return slice(index, index);
-	}
+    /**
+     * Reduce Resource collection to the one Resource at the given 0-based index.
+     * 
+     * @param index
+     *            0-based index
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q eq(int index) {
+        return slice(index, index);
+    }
 
-	/**
-	 * Filter Resource collection using given selector.
-	 * 
-	 * @param selector Selector
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q filter(String selector) {
-		return function(new IdentityFunction<T>(), selector);
-	}
+    /**
+     * Filter Resource collection using given selector.
+     * 
+     * @param selector
+     *            Selector
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q filter(String selector) {
+        return function(new IdentityFunction<T>(), selector);
+    }
 
-	/**
-	 * Filter Resource collection using given predicate object.
-	 * 
-	 * @param predicate Collection filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q filter(Predicate<T> predicate) {
-		return function(new FilterFunction<>(predicate));
-	}
+    /**
+     * Filter Resource collection using given predicate object.
+     * 
+     * @param predicate
+     *            Collection filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q filter(Predicate<T> predicate) {
+        return function(new FilterFunction<>(predicate));
+    }
 
-	/**
-	 * Filter Resource collection using given iterable.
-	 * 
-	 * @param iterable Collection filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q filter(Iterable<T> iterable) {
-		return function(new FilterFunction<>(new IterableContainsPredicate<>(iterable, provider)));
-	}
+    /**
+     * Filter Resource collection using given iterable.
+     * 
+     * @param iterable
+     *            Collection filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q filter(Iterable<T> iterable) {
+        return function(new FilterFunction<>(new IterableContainsPredicate<>(iterable, provider)));
+    }
 
-	/**
-	 * For each Resource in collection use depth-first search to return all its descendants. Please notice
-	 * that invoking this method on a Resource being a root of a large subtree may and will cause performance
-	 * problems.
-	 * 
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q find() {
-		return function(new FindFunction<>(searchStrategy, provider, ""));
-	}
+    /**
+     * For each Resource in collection use depth-first search to return all its
+     * descendants. Please notice that invoking this method on a Resource being a
+     * root of a large subtree may and will cause performance problems.
+     * 
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q find() {
+        return function(new FindFunction<>(searchStrategy, provider, ""));
+    }
 
-	/**
-	 * For each Resource in collection use breadth-first search to return all its descendants. Please notice
-	 * that invoking this method on a Resource being a root of a large subtree may and will cause performance
-	 * problems.
-	 * 
-	 * @param selector descendants filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q find(String selector) {
-		return function(new FindFunction<>(searchStrategy, provider, selector), selector);
-	}
+    /**
+     * For each Resource in collection use breadth-first search to return all its
+     * descendants. Please notice that invoking this method on a Resource being a
+     * root of a large subtree may and will cause performance problems.
+     * 
+     * @param selector
+     *            descendants filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q find(String selector) {
+        return function(new FindFunction<>(searchStrategy, provider, selector), selector);
+    }
 
-	/**
-	 * For each Resource in collection use breadth-first search to return all its descendants. Please notice
-	 * that invoking this method on a Resource being a root of a large subtree may and will cause performance
-	 * problems.
-	 * 
-	 * @param predicate descendants filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q find(Predicate<T> predicate) {
-		return function(new FindFunction<>(searchStrategy, provider, ""), predicate);
-	}
+    /**
+     * For each Resource in collection use breadth-first search to return all its
+     * descendants. Please notice that invoking this method on a Resource being a
+     * root of a large subtree may and will cause performance problems.
+     * 
+     * @param predicate
+     *            descendants filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q find(Predicate<T> predicate) {
+        return function(new FindFunction<>(searchStrategy, provider, ""), predicate);
+    }
 
-	/**
-	 * For each Resource in collection use breadth-first search to return all its descendants. Please notice
-	 * that invoking this method on a Resource being a root of a large subtree may and will cause performance
-	 * problems.
-	 * 
-	 * @param iterable descendants filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q find(Iterable<T> iterable) {
-		return function(new DescendantFunction<>(new LazyList<>(iterable.iterator()), provider));
-	}
+    /**
+     * For each Resource in collection use breadth-first search to return all its
+     * descendants. Please notice that invoking this method on a Resource being a
+     * root of a large subtree may and will cause performance problems.
+     * 
+     * @param iterable
+     *            descendants filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q find(Iterable<T> iterable) {
+        return function(new DescendantFunction<>(new LazyList<>(iterable.iterator()), provider));
+    }
 
-	/**
-	 * Filter Resource collection to the first element. Equivalent to {@code eq(0)} or {@code slice(0, 0)}.
-	 * 
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q first() {
-		return eq(0);
-	}
+    /**
+     * Filter Resource collection to the first element. Equivalent to {@code eq(0)}
+     * or {@code slice(0, 0)}.
+     * 
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q first() {
+        return eq(0);
+    }
 
-	/**
-	 * Pick such Resources from the collection that have descendant matching the selector.
-	 * 
-	 * @param selector Descendant selector
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q has(String selector) {
-		return function(new HasFunction<>(selector, searchStrategy, provider));
-	}
+    /**
+     * Pick such Resources from the collection that have descendant matching the
+     * selector.
+     * 
+     * @param selector
+     *            Descendant selector
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q has(String selector) {
+        return function(new HasFunction<>(selector, searchStrategy, provider));
+    }
 
-	/**
-	 * Pick such Resources from the collection that have descendant matching the selector.
-	 * 
-	 * @param predicate Descendant selector
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q has(Predicate<T> predicate) {
-		return function(new HasFunction<>(predicate, searchStrategy, provider));
-	}
+    /**
+     * Pick such Resources from the collection that have descendant matching the
+     * selector.
+     * 
+     * @param predicate
+     *            Descendant selector
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q has(Predicate<T> predicate) {
+        return function(new HasFunction<>(predicate, searchStrategy, provider));
+    }
 
-	/**
-	 * Pick such Resources from the collection that have descendant matching the selector.
-	 * 
-	 * @param iterable Descendant selector
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q has(Iterable<T> iterable) {
-		return function(new HasFunction<>(iterable, provider));
-	}
+    /**
+     * Pick such Resources from the collection that have descendant matching the
+     * selector.
+     * 
+     * @param iterable
+     *            Descendant selector
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q has(Iterable<T> iterable) {
+        return function(new HasFunction<>(iterable, provider));
+    }
 
-	/**
-	 * Filter Resource collection to the last element.
-	 * 
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q last() {
-		return function(new LastFunction<T>());
-	}
+    /**
+     * Filter Resource collection to the last element.
+     * 
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q last() {
+        return function(new LastFunction<T>());
+    }
 
-	/**
-	 * Return the next sibling for each Resource in the collection.
-	 * 
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q next() {
-		return function(new NextFunction<>(provider));
-	}
+    /**
+     * Return the next sibling for each Resource in the collection.
+     * 
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q next() {
+        return function(new NextFunction<>(provider));
+    }
 
-	/**
-	 * Return the next sibling for each Resource in the collection and filter it by a selector. If the next
-	 * sibling doesn't match it, empty collection will be returned.
-	 * 
-	 * @param selector Next sibling filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q next(String selector) {
-		return function(new NextFunction<>(provider), selector);
-	}
+    /**
+     * Return the next sibling for each Resource in the collection and filter it by
+     * a selector. If the next sibling doesn't match it, empty collection will be
+     * returned.
+     * 
+     * @param selector
+     *            Next sibling filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q next(String selector) {
+        return function(new NextFunction<>(provider), selector);
+    }
 
-	/**
-	 * Return the next sibling for each Resource in the collection and filter it by a selector. If the next
-	 * sibling doesn't match it, empty collection will be returned.
-	 * 
-	 * @param predicate Next sibling filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q next(Predicate<T> predicate) {
-		return function(new NextFunction<>(provider), predicate);
-	}
+    /**
+     * Return the next sibling for each Resource in the collection and filter it by
+     * a selector. If the next sibling doesn't match it, empty collection will be
+     * returned.
+     * 
+     * @param predicate
+     *            Next sibling filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q next(Predicate<T> predicate) {
+        return function(new NextFunction<>(provider), predicate);
+    }
 
-	/**
-	 * Return the next sibling for each Resource in the collection and filter it by a selector. If the next
-	 * sibling doesn't match it, empty collection will be returned.
-	 * 
-	 * @param iterable Next sibling filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q next(Iterable<T> iterable) {
-		return function(new NextFunction<>(provider), iterable);
-	}
+    /**
+     * Return the next sibling for each Resource in the collection and filter it by
+     * a selector. If the next sibling doesn't match it, empty collection will be
+     * returned.
+     * 
+     * @param iterable
+     *            Next sibling filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q next(Iterable<T> iterable) {
+        return function(new NextFunction<>(provider), iterable);
+    }
 
-	/**
-	 * Return all following siblings for each Resource in the collection.
-	 * 
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q nextAll() {
-		return function(new NextFunction<>(new RejectingPredicate<>(), provider));
-	}
+    /**
+     * Return all following siblings for each Resource in the collection.
+     * 
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q nextAll() {
+        return function(new NextFunction<>(new RejectingPredicate<>(), provider));
+    }
 
-	/**
-	 * Return all following siblings for each Resource in the collection, filtering them by a selector.
-	 * 
-	 * @param selector Following siblings filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q nextAll(String selector) {
-		return function(new NextFunction<>(new RejectingPredicate<>(), provider), selector);
-	}
+    /**
+     * Return all following siblings for each Resource in the collection, filtering
+     * them by a selector.
+     * 
+     * @param selector
+     *            Following siblings filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q nextAll(String selector) {
+        return function(new NextFunction<>(new RejectingPredicate<>(), provider), selector);
+    }
 
-	/**
-	 * Return all following siblings for each Resource in the collection, filtering them by a selector.
-	 * 
-	 * @param predicate Following siblings filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q nextAll(Predicate<T> predicate) {
-		return function(new NextFunction<>(new RejectingPredicate<>(), provider), predicate);
-	}
+    /**
+     * Return all following siblings for each Resource in the collection, filtering
+     * them by a selector.
+     * 
+     * @param predicate
+     *            Following siblings filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q nextAll(Predicate<T> predicate) {
+        return function(new NextFunction<>(new RejectingPredicate<>(), provider), predicate);
+    }
 
-	/**
-	 * Return all following siblings for each Resource in the collection, filtering them by a selector.
-	 * 
-	 * @param iterable Following siblings filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q nextAll(Iterable<T> iterable) {
-		return function(new NextFunction<>(new RejectingPredicate<>(), provider), iterable);
-	}
+    /**
+     * Return all following siblings for each Resource in the collection, filtering
+     * them by a selector.
+     * 
+     * @param iterable
+     *            Following siblings filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q nextAll(Iterable<T> iterable) {
+        return function(new NextFunction<>(new RejectingPredicate<>(), provider), iterable);
+    }
 
-	/**
-	 * Return all following siblings for each Resource in the collection up to, but not including, Resource
-	 * matched by a selector.
-	 * 
-	 * @param until Selector marking when the operation should stop
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q nextUntil(String until) {
-		return function(new NextFunction<>(parse(until), provider));
-	}
+    /**
+     * Return all following siblings for each Resource in the collection up to, but
+     * not including, Resource matched by a selector.
+     * 
+     * @param until
+     *            Selector marking when the operation should stop
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q nextUntil(String until) {
+        return function(new NextFunction<>(parse(until), provider));
+    }
 
-	/**
-	 * Return all following siblings for each Resource in the collection up to, but not including, Resource
-	 * matched by a selector.
-	 * 
-	 * @param predicate Selector marking when the operation should stop
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q nextUntil(Predicate<T> predicate) {
-		return function(new NextFunction<>(predicate, provider));
-	}
+    /**
+     * Return all following siblings for each Resource in the collection up to, but
+     * not including, Resource matched by a selector.
+     * 
+     * @param predicate
+     *            Selector marking when the operation should stop
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q nextUntil(Predicate<T> predicate) {
+        return function(new NextFunction<>(predicate, provider));
+    }
 
-	/**
-	 * Return all following siblings for each Resource in the collection up to, but not including, Resource
-	 * matched by a selector.
-	 * 
-	 * @param iterable Selector marking when the operation should stop
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q nextUntil(Iterable<T> iterable) {
-		return nextUntil(new IterableContainsPredicate<>(iterable, provider));
-	}
+    /**
+     * Return all following siblings for each Resource in the collection up to, but
+     * not including, Resource matched by a selector.
+     * 
+     * @param iterable
+     *            Selector marking when the operation should stop
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q nextUntil(Iterable<T> iterable) {
+        return nextUntil(new IterableContainsPredicate<>(iterable, provider));
+    }
 
-	/**
-	 * Remove elements from the collection.
-	 * 
-	 * @param selector Selector used to remove Resources
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q not(String selector) {
-		return function(new NotFunction<>(parse(selector)));
-	}
+    /**
+     * Remove elements from the collection.
+     * 
+     * @param selector
+     *            Selector used to remove Resources
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q not(String selector) {
+        return function(new NotFunction<>(parse(selector)));
+    }
 
-	/**
-	 * Remove elements from the collection.
-	 * 
-	 * @param predicate Selector used to remove Resources
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q not(Predicate<T> predicate) {
-		return function(new FilterFunction<>(new RejectingPredicate<>(predicate)));
-	}
+    /**
+     * Remove elements from the collection.
+     * 
+     * @param predicate
+     *            Selector used to remove Resources
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q not(Predicate<T> predicate) {
+        return function(new FilterFunction<>(new RejectingPredicate<>(predicate)));
+    }
 
-	/**
-	 * Remove elements from the collection.
-	 * 
-	 * @param iterable Selector used to remove Resources
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q not(Iterable<T> iterable) {
-		return not(new IterableContainsPredicate<>(iterable, provider));
-	}
+    /**
+     * Remove elements from the collection.
+     * 
+     * @param iterable
+     *            Selector used to remove Resources
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q not(Iterable<T> iterable) {
+        return not(new IterableContainsPredicate<>(iterable, provider));
+    }
 
-	/**
-	 * Replace each element in the collection with its parent.
-	 * 
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q parent() {
-		return function(new ParentFunction<>(provider));
-	}
+    /**
+     * Replace each element in the collection with its parent.
+     * 
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q parent() {
+        return function(new ParentFunction<>(provider));
+    }
 
-	/**
-	 * For each element in the collection find its all ancestor.
-	 * 
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q parents() {
-		return function(new ParentsFunction<>(new RejectingPredicate<>(), provider));
-	}
+    /**
+     * For each element in the collection find its all ancestor.
+     * 
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q parents() {
+        return function(new ParentsFunction<>(new RejectingPredicate<>(), provider));
+    }
 
-	/**
-	 * For each element in the collection find its all ancestor, filtered by a selector.
-	 * 
-	 * @param selector Parents filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q parents(String selector) {
-		return function(new ParentsFunction<>(new RejectingPredicate<>(), provider), selector);
-	}
+    /**
+     * For each element in the collection find its all ancestor, filtered by a
+     * selector.
+     * 
+     * @param selector
+     *            Parents filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q parents(String selector) {
+        return function(new ParentsFunction<>(new RejectingPredicate<>(), provider), selector);
+    }
 
-	/**
-	 * For each element in the collection find its all ancestor, filtered by a selector.
-	 * 
-	 * @param predicate Parents filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q parents(Predicate<T> predicate) {
-		return function(new ParentsFunction<>(new RejectingPredicate<>(), provider), predicate);
-	}
+    /**
+     * For each element in the collection find its all ancestor, filtered by a
+     * selector.
+     * 
+     * @param predicate
+     *            Parents filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q parents(Predicate<T> predicate) {
+        return function(new ParentsFunction<>(new RejectingPredicate<>(), provider), predicate);
+    }
 
-	/**
-	 * For each element in the collection find its all ancestor, filtered by a selector.
-	 * 
-	 * @param iterable Parents filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q parents(Iterable<T> iterable) {
-		return function(new ParentsFunction<>(new RejectingPredicate<>(), provider), iterable);
-	}
+    /**
+     * For each element in the collection find its all ancestor, filtered by a
+     * selector.
+     * 
+     * @param iterable
+     *            Parents filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q parents(Iterable<T> iterable) {
+        return function(new ParentsFunction<>(new RejectingPredicate<>(), provider), iterable);
+    }
 
-	/**
-	 * For each element in the collection find all of its ancestors until the predicate is met.
-	 * 
-	 * @param until Selector marking when the operation should stop
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q parentsUntil(String until) {
-		return function(new ParentsFunction<>(parse(until), provider));
-	}
+    /**
+     * For each element in the collection find all of its ancestors until the
+     * predicate is met.
+     * 
+     * @param until
+     *            Selector marking when the operation should stop
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q parentsUntil(String until) {
+        return function(new ParentsFunction<>(parse(until), provider));
+    }
 
-	/**
-	 * For each element in the collection find all of its ancestors until the predicate is met.
-	 * 
-	 * @param predicate Selector marking when the operation should stop
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q parentsUntil(Predicate<T> predicate) {
-		return function(new ParentsFunction<>(predicate, provider));
-	}
+    /**
+     * For each element in the collection find all of its ancestors until the
+     * predicate is met.
+     * 
+     * @param predicate
+     *            Selector marking when the operation should stop
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q parentsUntil(Predicate<T> predicate) {
+        return function(new ParentsFunction<>(predicate, provider));
+    }
 
-	/**
-	 * For each element in the collection find all of its ancestors until the predicate is met.
-	 * 
-	 * @param iterable Selector marking when the operation should stop
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q parentsUntil(Iterable<T> iterable) {
-		return parentsUntil(new IterableContainsPredicate<>(iterable, provider));
-	}
+    /**
+     * For each element in the collection find all of its ancestors until the
+     * predicate is met.
+     * 
+     * @param iterable
+     *            Selector marking when the operation should stop
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q parentsUntil(Iterable<T> iterable) {
+        return parentsUntil(new IterableContainsPredicate<>(iterable, provider));
+    }
 
-	/**
-	 * Return the previous sibling for each Resource in the collection.
-	 * 
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q prev() {
-		return function(new PrevFunction<>(provider));
-	}
+    /**
+     * Return the previous sibling for each Resource in the collection.
+     * 
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q prev() {
+        return function(new PrevFunction<>(provider));
+    }
 
-	/**
-	 * Return the previous sibling for each Resource in the collection and filter it by a selector. If the
-	 * previous sibling doesn't match it, empty collection will be returned.
-	 * 
-	 * @param selector Previous sibling filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q prev(String selector) {
-		return function(new PrevFunction<>(null, provider), selector);
-	}
+    /**
+     * Return the previous sibling for each Resource in the collection and filter it
+     * by a selector. If the previous sibling doesn't match it, empty collection
+     * will be returned.
+     * 
+     * @param selector
+     *            Previous sibling filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q prev(String selector) {
+        return function(new PrevFunction<>(null, provider), selector);
+    }
 
-	/**
-	 * Return the previous sibling for each Resource in the collection and filter it by a selector. If the
-	 * previous sibling doesn't match it, empty collection will be returned.
-	 * 
-	 * @param predicate Previous sibling filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q prev(Predicate<T> predicate) {
-		return function(new PrevFunction<>(null, provider), predicate);
-	}
+    /**
+     * Return the previous sibling for each Resource in the collection and filter it
+     * by a selector. If the previous sibling doesn't match it, empty collection
+     * will be returned.
+     * 
+     * @param predicate
+     *            Previous sibling filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q prev(Predicate<T> predicate) {
+        return function(new PrevFunction<>(null, provider), predicate);
+    }
 
-	/**
-	 * Return the previous sibling for each Resource in the collection and filter it by a selector. If the
-	 * previous sibling doesn't match it, empty collection will be returned.
-	 * 
-	 * @param iterable Previous sibling filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q prev(Iterable<T> iterable) {
-		return function(new PrevFunction<>(null, provider), iterable);
-	}
+    /**
+     * Return the previous sibling for each Resource in the collection and filter it
+     * by a selector. If the previous sibling doesn't match it, empty collection
+     * will be returned.
+     * 
+     * @param iterable
+     *            Previous sibling filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q prev(Iterable<T> iterable) {
+        return function(new PrevFunction<>(null, provider), iterable);
+    }
 
-	/**
-	 * Return all previous siblings for each Resource in the collection.
-	 * 
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q prevAll() {
-		return function(new PrevFunction<>(new RejectingPredicate<>(), provider));
-	}
+    /**
+     * Return all previous siblings for each Resource in the collection.
+     * 
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q prevAll() {
+        return function(new PrevFunction<>(new RejectingPredicate<>(), provider));
+    }
 
-	/**
-	 * Return all previous siblings for each Resource in the collection, filtering them by a selector.
-	 * 
-	 * @param selector Previous siblings filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q prevAll(String selector) {
-		return function(new PrevFunction<>(new RejectingPredicate<>(), provider), selector);
-	}
+    /**
+     * Return all previous siblings for each Resource in the collection, filtering
+     * them by a selector.
+     * 
+     * @param selector
+     *            Previous siblings filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q prevAll(String selector) {
+        return function(new PrevFunction<>(new RejectingPredicate<>(), provider), selector);
+    }
 
-	/**
-	 * Return all previous siblings for each Resource in the collection, filtering them by a selector.
-	 * 
-	 * @param predicate Previous siblings filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q prevAll(Predicate<T> predicate) {
-		return function(new PrevFunction<>(new RejectingPredicate<>(), provider), predicate);
-	}
+    /**
+     * Return all previous siblings for each Resource in the collection, filtering
+     * them by a selector.
+     * 
+     * @param predicate
+     *            Previous siblings filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q prevAll(Predicate<T> predicate) {
+        return function(new PrevFunction<>(new RejectingPredicate<>(), provider), predicate);
+    }
 
-	/**
-	 * Return all previous siblings for each Resource in the collection, filtering them by a selector.
-	 * 
-	 * @param iterable Previous siblings filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q prevAll(Iterable<T> iterable) {
-		return function(new PrevFunction<>(new RejectingPredicate<>(), provider), iterable);
-	}
+    /**
+     * Return all previous siblings for each Resource in the collection, filtering
+     * them by a selector.
+     * 
+     * @param iterable
+     *            Previous siblings filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q prevAll(Iterable<T> iterable) {
+        return function(new PrevFunction<>(new RejectingPredicate<>(), provider), iterable);
+    }
 
-	/**
-	 * Return all previous siblings for each Resource in the collection up to, but not including, Resource
-	 * matched by a selector.
-	 * 
-	 * @param until Selector marking when the operation should stop
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q prevUntil(String until) {
-		return function(new PrevFunction<>(parse(until), provider));
-	}
+    /**
+     * Return all previous siblings for each Resource in the collection up to, but
+     * not including, Resource matched by a selector.
+     * 
+     * @param until
+     *            Selector marking when the operation should stop
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q prevUntil(String until) {
+        return function(new PrevFunction<>(parse(until), provider));
+    }
 
-	/**
-	 * Return all previous siblings for each Resource in the collection up to, but not including, Resource
-	 * matched by a selector.
-	 * 
-	 * @param predicate Selector marking when the operation should stop
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q prevUntil(Predicate<T> predicate) {
-		return function(new PrevFunction<>(predicate, provider));
-	}
+    /**
+     * Return all previous siblings for each Resource in the collection up to, but
+     * not including, Resource matched by a selector.
+     * 
+     * @param predicate
+     *            Selector marking when the operation should stop
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q prevUntil(Predicate<T> predicate) {
+        return function(new PrevFunction<>(predicate, provider));
+    }
 
-	/**
-	 * Return all previous siblings for each Resource in the collection up to, but not including, Resource
-	 * matched by a selector.
-	 * 
-	 * @param iterable Selector marking when the operation should stop
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q prevUntil(Iterable<T> iterable) {
-		return prevUntil(new IterableContainsPredicate<>(iterable, provider));
-	}
+    /**
+     * Return all previous siblings for each Resource in the collection up to, but
+     * not including, Resource matched by a selector.
+     * 
+     * @param iterable
+     *            Selector marking when the operation should stop
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q prevUntil(Iterable<T> iterable) {
+        return prevUntil(new IterableContainsPredicate<>(iterable, provider));
+    }
 
-	/**
-	 * Set new search strategy, which will be used in {@link AbstractQuery#find()} and
-	 * {@link AbstractQuery#has(String)} functions.
-	 * 
-	 * @param strategy Search strategy type
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q searchStrategy(SearchStrategy strategy) {
-		return clone(this, strategy);
-	}
+    /**
+     * Set new search strategy, which will be used in {@link AbstractQuery#find()}
+     * and {@link AbstractQuery#has(String)} functions.
+     * 
+     * @param strategy
+     *            Search strategy type
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q searchStrategy(SearchStrategy strategy) {
+        return clone(this, strategy);
+    }
 
-	/**
-	 * Return siblings for the given Ts.
-	 * 
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q siblings() {
-		return siblings("");
-	}
+    /**
+     * Return siblings for the given Ts.
+     * 
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q siblings() {
+        return siblings("");
+    }
 
-	/**
-	 * Return siblings for the given Resources filtered by a selector.
-	 * 
-	 * @param selector Siblings filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q siblings(String selector) {
-		return function(new SiblingsFunction<>(provider), selector);
-	}
+    /**
+     * Return siblings for the given Resources filtered by a selector.
+     * 
+     * @param selector
+     *            Siblings filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q siblings(String selector) {
+        return function(new SiblingsFunction<>(provider), selector);
+    }
 
-	/**
-	 * Return siblings for the given Resources filtered by a selector.
-	 * 
-	 * @param predicate Siblings filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q siblings(Predicate<T> predicate) {
-		return function(new SiblingsFunction<>(provider), predicate);
-	}
+    /**
+     * Return siblings for the given Resources filtered by a selector.
+     * 
+     * @param predicate
+     *            Siblings filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q siblings(Predicate<T> predicate) {
+        return function(new SiblingsFunction<>(provider), predicate);
+    }
 
-	/**
-	 * Return siblings for the given Resources filtered by a selector.
-	 * 
-	 * @param iterable Siblings filter
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q siblings(Iterable<T> iterable) {
-		return function(new SiblingsFunction<>(provider), iterable);
-	}
+    /**
+     * Return siblings for the given Resources filtered by a selector.
+     * 
+     * @param iterable
+     *            Siblings filter
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q siblings(Iterable<T> iterable) {
+        return function(new SiblingsFunction<>(provider), iterable);
+    }
 
-	/**
-	 * Filter out first {@code from} Resources from the collection.
-	 * 
-	 * @param from How many Resources to cut out
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q slice(int from) {
-		if (from < 0) {
-			throw new IndexOutOfBoundsException();
-		}
-		return function(new SliceFunction<T>(from));
-	}
+    /**
+     * Filter out first {@code from} Resources from the collection.
+     * 
+     * @param from
+     *            How many Resources to cut out
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q slice(int from) {
+        if (from < 0) {
+            throw new IndexOutOfBoundsException();
+        }
+        return function(new SliceFunction<T>(from));
+    }
 
-	/**
-	 * Reduce the collection to a subcollection specified by a given range. Both from and to are inclusive,
-	 * 0-based indices.
-	 * 
-	 * @param from Low endpoint (inclusive) of the subcollection
-	 * @param to High endpoint (inclusive) of the subcollection
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q slice(int from, int to) {
-		if (from < 0) {
-			throw new IndexOutOfBoundsException();
-		}
-		if (from > to) {
-			throw new IllegalArgumentException();
-		}
-		return function(new SliceFunction<T>(from, to));
-	}
+    /**
+     * Reduce the collection to a subcollection specified by a given range. Both
+     * from and to are inclusive, 0-based indices.
+     * 
+     * @param from
+     *            Low endpoint (inclusive) of the subcollection
+     * @param to
+     *            High endpoint (inclusive) of the subcollection
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q slice(int from, int to) {
+        if (from < 0) {
+            throw new IndexOutOfBoundsException();
+        }
+        if (from > to) {
+            throw new IllegalArgumentException();
+        }
+        return function(new SliceFunction<T>(from, to));
+    }
 
-	/**
-	 * Filter out repeated resources. The implementation of this method uses
-	 * a {@link HashSet} to store the processed elements, which may result
-	 * in an increased memory usage for the big collections.
-	 *
-	 * @return new SlingQuery object transformed by this operation
-	 */
-	public Q unique() {
-		return function(new UniqueFunction<>());
-	}
+    /**
+     * Filter out repeated resources. The implementation of this method uses a
+     * {@link HashSet} to store the processed elements, which may result in an
+     * increased memory usage for the big collections.
+     *
+     * @return new SlingQuery object transformed by this operation
+     */
+    public Q unique() {
+        return function(new UniqueFunction<>());
+    }
 
-	private Q function(Function<?, ?> function, Iterable<T> iterable) {
-		Q newQuery = clone(this, this.searchStrategy);
-		newQuery.functions.add(function);
-		newQuery.functions.add(new FilterFunction<>(new IterableContainsPredicate<>(iterable, provider)));
-		return newQuery;
-	}
+    private Q function(Function<?, ?> function, Iterable<T> iterable) {
+        Q newQuery = clone(this, this.searchStrategy);
+        newQuery.functions.add(function);
+        newQuery.functions.add(new FilterFunction<>(new IterableContainsPredicate<>(iterable, provider)));
+        return newQuery;
+    }
 
-	private Q function(Function<?, ?> function, Predicate<T> predicate) {
-		Q newQuery = clone(this, this.searchStrategy);
-		newQuery.functions.add(function);
-		newQuery.functions.add(new FilterFunction<>(predicate));
-		return newQuery;
-	}
+    private Q function(Function<?, ?> function, Predicate<T> predicate) {
+        Q newQuery = clone(this, this.searchStrategy);
+        newQuery.functions.add(function);
+        newQuery.functions.add(new FilterFunction<>(predicate));
+        return newQuery;
+    }
 
-	private Q function(Function<?, ?> function, String selector) {
-		Q newQuery = clone(this, this.searchStrategy);
-		newQuery.functions.add(function);
-		newQuery.functions.add(new SelectorFunction<>(selector, provider, searchStrategy));
-		return newQuery;
-	}
+    private Q function(Function<?, ?> function, String selector) {
+        Q newQuery = clone(this, this.searchStrategy);
+        newQuery.functions.add(function);
+        newQuery.functions.add(new SelectorFunction<>(selector, provider, searchStrategy));
+        return newQuery;
+    }
 
-	private Q function(Function<?, ?> function) {
-		Q newQuery = clone(this, this.searchStrategy);
-		newQuery.functions.add(function);
-		return newQuery;
-	}
+    private Q function(Function<?, ?> function) {
+        Q newQuery = clone(this, this.searchStrategy);
+        newQuery.functions.add(function);
+        return newQuery;
+    }
 
-	private SelectorFunction<T> parse(String selector) {
-		return new SelectorFunction<>(selector, provider, searchStrategy);
-	}
+    private SelectorFunction<T> parse(String selector) {
+        return new SelectorFunction<>(selector, provider, searchStrategy);
+    }
 
-	protected abstract Q clone(AbstractQuery<T, Q> original, SearchStrategy strategy);
+    protected abstract Q clone(AbstractQuery<T, Q> original, SearchStrategy strategy);
 
-	@Override
-	public String toString() {
-		StringBuilder builder = new StringBuilder();
-		builder.append("$(");
-		Iterator<T> iterator = this.iterator();
-		while (iterator.hasNext()) {
-			builder.append('[');
-			builder.append(iterator.next());
-			builder.append(']');
-			if (iterator.hasNext()) {
-				builder.append(", ");
-			}
-		}
-		builder.append(")");
-		return builder.toString();
-	}
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("$(");
+        Iterator<T> iterator = this.iterator();
+        while (iterator.hasNext()) {
+            builder.append('[');
+            builder.append(iterator.next());
+            builder.append(']');
+            if (iterator.hasNext()) {
+                builder.append(", ");
+            }
+        }
+        builder.append(")");
+        return builder.toString();
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/SlingQuery.java b/src/main/java/org/apache/sling/query/SlingQuery.java
index 08b57f2..b5c9b2f 100644
--- a/src/main/java/org/apache/sling/query/SlingQuery.java
+++ b/src/main/java/org/apache/sling/query/SlingQuery.java
@@ -34,57 +34,60 @@
 @ProviderType
 public class SlingQuery extends AbstractQuery<Resource, SlingQuery> {
 
-	private SlingQuery(AbstractQuery<Resource, SlingQuery> original, SearchStrategy strategy) {
-		super(original, strategy);
-	}
+    private SlingQuery(AbstractQuery<Resource, SlingQuery> original, SearchStrategy strategy) {
+        super(original, strategy);
+    }
 
-	private SlingQuery(Resource[] resources, SearchStrategy strategy) {
-		super(new ResourceTreeProvider(resources[0].getResourceResolver()), resources, strategy);
-	}
+    private SlingQuery(Resource[] resources, SearchStrategy strategy) {
+        super(new ResourceTreeProvider(resources[0].getResourceResolver()), resources, strategy);
+    }
 
-	public static SlingQuery $(Resource... resources) {
-		if (resources.length == 0) {
-			throw new IllegalArgumentException("Initial collection can't be empty");
-		} else {
-			return new SlingQuery(resources, SearchStrategy.QUERY);
-		}
-	}
+    public static SlingQuery $(Resource... resources) {
+        if (resources.length == 0) {
+            throw new IllegalArgumentException("Initial collection can't be empty");
+        } else {
+            return new SlingQuery(resources, SearchStrategy.QUERY);
+        }
+    }
 
-	public static SlingQuery $(ResourceResolver resolver) {
-		return $(resolver.getResource("/"));
-	}
+    public static SlingQuery $(ResourceResolver resolver) {
+        return $(resolver.getResource("/"));
+    }
 
-	/**
-	 * Transform the whole collection to a new {@link Iterable} object, invoking
-	 * {@link Adaptable#adaptTo(Class)} method on each Resource. If some Resource can't be adapted to the
-	 * class (eg. {@code adaptTo()} returns {@code null}), it will be skipped.
-	 * 
-	 * @param clazz Class used to adapt the Resources
-	 * @param <E> type of the clazz
-	 * @return new iterable containing succesfully adapted Resources
-	 */
-	public <E> Iterable<E> map(final Class<? extends E> clazz) {
-		return () -> new AdaptToIterator<>(SlingQuery.this.iterator(), clazz);
-	}
+    /**
+     * Transform the whole collection to a new {@link Iterable} object, invoking
+     * {@link Adaptable#adaptTo(Class)} method on each Resource. If some Resource
+     * can't be adapted to the class (eg. {@code adaptTo()} returns {@code null}),
+     * it will be skipped.
+     * 
+     * @param clazz
+     *            Class used to adapt the Resources
+     * @param <E>
+     *            type of the clazz
+     * @return new iterable containing succesfully adapted Resources
+     */
+    public <E> Iterable<E> map(final Class<? extends E> clazz) {
+        return () -> new AdaptToIterator<>(SlingQuery.this.iterator(), clazz);
+    }
 
-	@Override
-	protected SlingQuery clone(AbstractQuery<Resource, SlingQuery> original, SearchStrategy strategy) {
-		return new SlingQuery(original, strategy);
-	}
+    @Override
+    protected SlingQuery clone(AbstractQuery<Resource, SlingQuery> original, SearchStrategy strategy) {
+        return new SlingQuery(original, strategy);
+    }
 
-	@Override
-	public String toString() {
-		StringBuilder builder = new StringBuilder();
-		builder.append("$(");
-		Iterator<Resource> iterator = this.iterator();
-		while (iterator.hasNext()) {
-			builder.append(iterator.next().getPath());
-			if (iterator.hasNext()) {
-				builder.append(", ");
-			}
-		}
-		builder.append(")");
-		return builder.toString();
-	}
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("$(");
+        Iterator<Resource> iterator = this.iterator();
+        while (iterator.hasNext()) {
+            builder.append(iterator.next().getPath());
+            if (iterator.hasNext()) {
+                builder.append(", ");
+            }
+        }
+        builder.append(")");
+        return builder.toString();
+    }
 
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/api/SearchStrategy.java b/src/main/java/org/apache/sling/query/api/SearchStrategy.java
index e8eb4df..91ae528 100644
--- a/src/main/java/org/apache/sling/query/api/SearchStrategy.java
+++ b/src/main/java/org/apache/sling/query/api/SearchStrategy.java
@@ -23,5 +23,5 @@
 
 @ProviderType
 public enum SearchStrategy {
-	BFS, DFS, QUERY
+    BFS, DFS, QUERY
 }
diff --git a/src/main/java/org/apache/sling/query/api/internal/Option.java b/src/main/java/org/apache/sling/query/api/internal/Option.java
index 074e5ed..f9e4e7f 100644
--- a/src/main/java/org/apache/sling/query/api/internal/Option.java
+++ b/src/main/java/org/apache/sling/query/api/internal/Option.java
@@ -23,60 +23,60 @@
 import org.apache.commons.lang.builder.HashCodeBuilder;
 
 public class Option<T> {
-	private final T element;
+    private final T element;
 
-	private final int argumentId;
+    private final int argumentId;
 
-	private Option(T element, int argumentId) {
-		this.element = element;
-		this.argumentId = argumentId;
-	}
+    private Option(T element, int argumentId) {
+        this.element = element;
+        this.argumentId = argumentId;
+    }
 
-	public static <T> Option<T> of(T element, int argumentId) {
-		return new Option<>(element, argumentId);
-	}
+    public static <T> Option<T> of(T element, int argumentId) {
+        return new Option<>(element, argumentId);
+    }
 
-	public static <T> Option<T> empty(int argumentId) {
-		return new Option<>(null, argumentId);
-	}
+    public static <T> Option<T> empty(int argumentId) {
+        return new Option<>(null, argumentId);
+    }
 
-	public int getArgumentId() {
-		return argumentId;
-	}
+    public int getArgumentId() {
+        return argumentId;
+    }
 
-	public T getElement() {
-		return element;
-	}
+    public T getElement() {
+        return element;
+    }
 
-	public boolean isEmpty() {
-		return element == null;
-	}
+    public boolean isEmpty() {
+        return element == null;
+    }
 
-	public String toString() {
-		if (isEmpty()) {
-			return "Option[-]";
-		} else {
-			return String.format("Option[%s]", element.toString());
-		}
-	}
+    public String toString() {
+        if (isEmpty()) {
+            return "Option[-]";
+        } else {
+            return String.format("Option[%s]", element.toString());
+        }
+    }
 
-	@Override
-	public boolean equals(Object obj) {
-		if (obj == null) {
-			return false;
-		}
-		if (obj == this) {
-			return true;
-		}
-		if (obj.getClass() != getClass()) {
-			return false;
-		}
-		Option<?> rhs = (Option<?>) obj;
-		return new EqualsBuilder().append(element, rhs.element).isEquals();
-	}
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (obj == this) {
+            return true;
+        }
+        if (obj.getClass() != getClass()) {
+            return false;
+        }
+        Option<?> rhs = (Option<?>) obj;
+        return new EqualsBuilder().append(element, rhs.element).isEquals();
+    }
 
-	@Override
-	public int hashCode() {
-		return new HashCodeBuilder().append(element).toHashCode();
-	}
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(element).toHashCode();
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/api/internal/TreeProvider.java b/src/main/java/org/apache/sling/query/api/internal/TreeProvider.java
index 50d3c6f..e0b6c7e 100644
--- a/src/main/java/org/apache/sling/query/api/internal/TreeProvider.java
+++ b/src/main/java/org/apache/sling/query/api/internal/TreeProvider.java
@@ -29,17 +29,17 @@
 
 @ConsumerType
 public interface TreeProvider<T> {
-	Iterator<T> listChildren(T parent);
+    Iterator<T> listChildren(T parent);
 
-	T getParent(T element);
+    T getParent(T element);
 
-	String getName(T element);
+    String getName(T element);
 
-	Predicate<T> getPredicate(String type, String name, List<Attribute> attributes);
+    Predicate<T> getPredicate(String type, String name, List<Attribute> attributes);
 
-	Iterator<T> query(List<SelectorSegment> segment, T resource);
+    Iterator<T> query(List<SelectorSegment> segment, T resource);
 
-	boolean sameElement(T o1, T o2);
+    boolean sameElement(T o1, T o2);
 
-	boolean isDescendant(T root, T testedElement);
+    boolean isDescendant(T root, T testedElement);
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/AddFunction.java b/src/main/java/org/apache/sling/query/impl/function/AddFunction.java
index 5edaaed..4315bad 100644
--- a/src/main/java/org/apache/sling/query/impl/function/AddFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/AddFunction.java
@@ -28,16 +28,16 @@
 
 public class AddFunction<T> implements IteratorToIteratorFunction<T> {
 
-	private final Iterable<T> iterable;
+    private final Iterable<T> iterable;
 
-	public AddFunction(Iterable<T> iterable) {
-		this.iterable = iterable;
-	}
+    public AddFunction(Iterable<T> iterable) {
+        this.iterable = iterable;
+    }
 
-	@SuppressWarnings("unchecked")
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new MergingIterator<>(input, new OptionDecoratingIterator<>(iterable.iterator()));
-	}
+    @SuppressWarnings("unchecked")
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
+        return new MergingIterator<>(input, new OptionDecoratingIterator<>(iterable.iterator()));
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/ChildrenFunction.java b/src/main/java/org/apache/sling/query/impl/function/ChildrenFunction.java
index 6b2ac6e..9465fef 100644
--- a/src/main/java/org/apache/sling/query/impl/function/ChildrenFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/ChildrenFunction.java
@@ -26,14 +26,14 @@
 
 public class ChildrenFunction<T> implements ElementToIteratorFunction<T> {
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public ChildrenFunction(TreeProvider<T> provider) {
-		this.provider = provider;
-	}
+    public ChildrenFunction(TreeProvider<T> provider) {
+        this.provider = provider;
+    }
 
-	@Override
-	public Iterator<T> apply(T parent) {
-		return provider.listChildren(parent);
-	}
+    @Override
+    public Iterator<T> apply(T parent) {
+        return provider.listChildren(parent);
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/impl/function/ClosestFunction.java b/src/main/java/org/apache/sling/query/impl/function/ClosestFunction.java
index c18b211..88d1a7d 100644
--- a/src/main/java/org/apache/sling/query/impl/function/ClosestFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/ClosestFunction.java
@@ -28,24 +28,24 @@
 
 public class ClosestFunction<T> implements ElementToIteratorFunction<T> {
 
-	private final Predicate<T> predicate;
+    private final Predicate<T> predicate;
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public ClosestFunction(Predicate<T> predicate, TreeProvider<T> provider) {
-		this.predicate = predicate;
-		this.provider = provider;
-	}
+    public ClosestFunction(Predicate<T> predicate, TreeProvider<T> provider) {
+        this.predicate = predicate;
+        this.provider = provider;
+    }
 
-	@Override
-	public Iterator<T> apply(T resource) {
-		T current = resource;
-		while (current != null) {
-			if (predicate.test(current)) {
-				return IteratorUtils.singleElementIterator(current);
-			}
-			current = provider.getParent(current);
-		}
-		return IteratorUtils.emptyIterator();
-	}
+    @Override
+    public Iterator<T> apply(T resource) {
+        T current = resource;
+        while (current != null) {
+            if (predicate.test(current)) {
+                return IteratorUtils.singleElementIterator(current);
+            }
+            current = provider.getParent(current);
+        }
+        return IteratorUtils.emptyIterator();
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/impl/function/CompositeFunction.java b/src/main/java/org/apache/sling/query/impl/function/CompositeFunction.java
index 23adc4b..4e7ad3b 100644
--- a/src/main/java/org/apache/sling/query/impl/function/CompositeFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/CompositeFunction.java
@@ -28,18 +28,18 @@
 
 public class CompositeFunction<T> implements IteratorToIteratorFunction<T> {
 
-	private final List<Function<?, ?>> functions;
+    private final List<Function<?, ?>> functions;
 
-	public CompositeFunction(List<Function<?, ?>> functions) {
-		this.functions = functions;
-	}
+    public CompositeFunction(List<Function<?, ?>> functions) {
+        this.functions = functions;
+    }
 
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		Iterator<Option<T>> iterator = input;
-		for (Function<?, ?> f : functions) {
-			iterator = new IteratorToIteratorFunctionWrapper<T>(f).apply(iterator);
-		}
-		return iterator;
-	}
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
+        Iterator<Option<T>> iterator = input;
+        for (Function<?, ?> f : functions) {
+            iterator = new IteratorToIteratorFunctionWrapper<T>(f).apply(iterator);
+        }
+        return iterator;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/DescendantFunction.java b/src/main/java/org/apache/sling/query/impl/function/DescendantFunction.java
index 946f2f0..6e5ac97 100644
--- a/src/main/java/org/apache/sling/query/impl/function/DescendantFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/DescendantFunction.java
@@ -28,18 +28,18 @@
 
 public class DescendantFunction<T> implements IteratorToIteratorFunction<T> {
 
-	private final Iterable<T> descendants;
+    private final Iterable<T> descendants;
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public DescendantFunction(Iterable<T> descendants, TreeProvider<T> provider) {
-		this.descendants = descendants;
-		this.provider = provider;
-	}
+    public DescendantFunction(Iterable<T> descendants, TreeProvider<T> provider) {
+        this.descendants = descendants;
+        this.provider = provider;
+    }
 
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new DescendantsIterator<>(input, descendants.iterator(), provider);
-	}
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
+        return new DescendantsIterator<>(input, descendants.iterator(), provider);
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/EvenFunction.java b/src/main/java/org/apache/sling/query/impl/function/EvenFunction.java
index fed6500..5307e79 100644
--- a/src/main/java/org/apache/sling/query/impl/function/EvenFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/EvenFunction.java
@@ -28,29 +28,29 @@
 
 public class EvenFunction<T> implements IteratorToIteratorFunction<T> {
 
-	private final boolean even;
+    private final boolean even;
 
-	public EvenFunction(boolean even) {
-		this.even = even;
-	}
+    public EvenFunction(boolean even) {
+        this.even = even;
+    }
 
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> resources) {
-		return new FilteringIterator<>(resources, new EvenPredicate<>(even));
-	}
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> resources) {
+        return new FilteringIterator<>(resources, new EvenPredicate<>(even));
+    }
 
-	private static class EvenPredicate<T> implements Predicate<T> {
-		private boolean accept;
+    private static class EvenPredicate<T> implements Predicate<T> {
+        private boolean accept;
 
-		public EvenPredicate(boolean firstState) {
-			accept = firstState;
-		}
+        public EvenPredicate(boolean firstState) {
+            accept = firstState;
+        }
 
-		@Override
-		public boolean test(T element) {
-			boolean oldAccept = accept;
-			accept = !accept;
-			return oldAccept;
-		}
-	}
+        @Override
+        public boolean test(T element) {
+            boolean oldAccept = accept;
+            accept = !accept;
+            return oldAccept;
+        }
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/FilterFunction.java b/src/main/java/org/apache/sling/query/impl/function/FilterFunction.java
index d4dc19e..c8039df 100644
--- a/src/main/java/org/apache/sling/query/impl/function/FilterFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/FilterFunction.java
@@ -28,15 +28,15 @@
 
 public class FilterFunction<T> implements IteratorToIteratorFunction<T> {
 
-	private final Predicate<T> predicate;
+    private final Predicate<T> predicate;
 
-	public FilterFunction(Predicate<T> predicate) {
-		this.predicate = predicate;
-	}
+    public FilterFunction(Predicate<T> predicate) {
+        this.predicate = predicate;
+    }
 
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new FilteringIterator<>(input, predicate);
-	}
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
+        return new FilteringIterator<>(input, predicate);
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/FindFunction.java b/src/main/java/org/apache/sling/query/impl/function/FindFunction.java
index 8767203..91eb179 100644
--- a/src/main/java/org/apache/sling/query/impl/function/FindFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/FindFunction.java
@@ -35,41 +35,40 @@
 
 public class FindFunction<T> implements ElementToIteratorFunction<T> {
 
-	private final List<SelectorSegment> preFilteringSelector;
+    private final List<SelectorSegment> preFilteringSelector;
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	private final SearchStrategy strategy;
+    private final SearchStrategy strategy;
 
-	public FindFunction(SearchStrategy searchStrategy, TreeProvider<T> provider,
-			SelectorSegment preFilteringSelector) {
-		this.strategy = searchStrategy;
-		this.provider = provider;
-		this.preFilteringSelector = Arrays.asList(preFilteringSelector);
-	}
+    public FindFunction(SearchStrategy searchStrategy, TreeProvider<T> provider, SelectorSegment preFilteringSelector) {
+        this.strategy = searchStrategy;
+        this.provider = provider;
+        this.preFilteringSelector = Arrays.asList(preFilteringSelector);
+    }
 
-	public FindFunction(SearchStrategy searchStrategy, TreeProvider<T> provider, String preFilteringSelector) {
-		this.strategy = searchStrategy;
-		this.provider = provider;
-		List<Selector> selectors = SelectorParser.parse(preFilteringSelector);
-		this.preFilteringSelector = SelectorParser.getFirstSegmentFromEachSelector(selectors);
-	}
+    public FindFunction(SearchStrategy searchStrategy, TreeProvider<T> provider, String preFilteringSelector) {
+        this.strategy = searchStrategy;
+        this.provider = provider;
+        List<Selector> selectors = SelectorParser.parse(preFilteringSelector);
+        this.preFilteringSelector = SelectorParser.getFirstSegmentFromEachSelector(selectors);
+    }
 
-	@Override
-	public Iterator<T> apply(T input) {
-		Iterator<T> iterator;
-		switch (strategy) {
-			case BFS:
-				iterator = new BfsTreeIterator<T>(input, provider);
-				break;
-			case QUERY:
-				iterator = provider.query(preFilteringSelector, input);
-				break;
-			case DFS:
-			default:
-				iterator = new DfsTreeIterator<>(input, provider);
-				break;
-		}
-		return new WarningIterator<>(iterator);
-	}
+    @Override
+    public Iterator<T> apply(T input) {
+        Iterator<T> iterator;
+        switch (strategy) {
+        case BFS:
+            iterator = new BfsTreeIterator<T>(input, provider);
+            break;
+        case QUERY:
+            iterator = provider.query(preFilteringSelector, input);
+            break;
+        case DFS:
+        default:
+            iterator = new DfsTreeIterator<>(input, provider);
+            break;
+        }
+        return new WarningIterator<>(iterator);
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/impl/function/HasFunction.java b/src/main/java/org/apache/sling/query/impl/function/HasFunction.java
index 2da072a..da57665 100644
--- a/src/main/java/org/apache/sling/query/impl/function/HasFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/HasFunction.java
@@ -33,38 +33,38 @@
 
 public class HasFunction<T> implements ElementToIteratorFunction<T> {
 
-	private final IteratorToIteratorFunction<T> findFunction;
+    private final IteratorToIteratorFunction<T> findFunction;
 
-	private final IteratorToIteratorFunction<T> filter;
+    private final IteratorToIteratorFunction<T> filter;
 
-	private HasFunction(FindFunction<T> findFunction, IteratorToIteratorFunction<T> filter) {
-		this.findFunction = new IteratorToIteratorFunctionWrapper<T>(findFunction);
-		this.filter = filter;
-	}
+    private HasFunction(FindFunction<T> findFunction, IteratorToIteratorFunction<T> filter) {
+        this.findFunction = new IteratorToIteratorFunctionWrapper<T>(findFunction);
+        this.filter = filter;
+    }
 
-	public HasFunction(String selectorString, SearchStrategy searchStrategy, TreeProvider<T> provider) {
-		this(new FindFunction<T>(searchStrategy, provider, selectorString), new SelectorFunction<T>(
-				selectorString, provider, searchStrategy));
-	}
+    public HasFunction(String selectorString, SearchStrategy searchStrategy, TreeProvider<T> provider) {
+        this(new FindFunction<T>(searchStrategy, provider, selectorString),
+                new SelectorFunction<T>(selectorString, provider, searchStrategy));
+    }
 
-	public HasFunction(Predicate<T> predicate, SearchStrategy searchStrategy, TreeProvider<T> provider) {
-		this(new FindFunction<>(searchStrategy, provider, ""), new FilterFunction<T>(predicate));
-	}
+    public HasFunction(Predicate<T> predicate, SearchStrategy searchStrategy, TreeProvider<T> provider) {
+        this(new FindFunction<>(searchStrategy, provider, ""), new FilterFunction<T>(predicate));
+    }
 
-	public HasFunction(Iterable<T> iterable, TreeProvider<T> provider) {
-		this.findFunction = new DescendantFunction<>(iterable, provider);
-		this.filter = new IdentityFunction<>();
-	}
+    public HasFunction(Iterable<T> iterable, TreeProvider<T> provider) {
+        this.findFunction = new DescendantFunction<>(iterable, provider);
+        this.filter = new IdentityFunction<>();
+    }
 
-	@Override
-	public Iterator<T> apply(T input) {
-		Iterator<Option<T>> iterator = IteratorUtils.singleElementIterator(Option.of(input, 0));
-		iterator = findFunction.apply(iterator);
-		iterator = filter.apply(iterator);
-		if (new EmptyElementFilter<>(iterator).hasNext()) {
-			return IteratorUtils.singleElementIterator(input);
-		} else {
-			return IteratorUtils.emptyIterator();
-		}
-	}
+    @Override
+    public Iterator<T> apply(T input) {
+        Iterator<Option<T>> iterator = IteratorUtils.singleElementIterator(Option.of(input, 0));
+        iterator = findFunction.apply(iterator);
+        iterator = filter.apply(iterator);
+        if (new EmptyElementFilter<>(iterator).hasNext()) {
+            return IteratorUtils.singleElementIterator(input);
+        } else {
+            return IteratorUtils.emptyIterator();
+        }
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/impl/function/IdentityFunction.java b/src/main/java/org/apache/sling/query/impl/function/IdentityFunction.java
index 894be67..16e4af4 100644
--- a/src/main/java/org/apache/sling/query/impl/function/IdentityFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/IdentityFunction.java
@@ -26,9 +26,9 @@
 
 public class IdentityFunction<T> implements IteratorToIteratorFunction<T> {
 
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return input;
-	}
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
+        return input;
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/IteratorToIteratorFunctionWrapper.java b/src/main/java/org/apache/sling/query/impl/function/IteratorToIteratorFunctionWrapper.java
index e014582..ae1252a 100644
--- a/src/main/java/org/apache/sling/query/impl/function/IteratorToIteratorFunctionWrapper.java
+++ b/src/main/java/org/apache/sling/query/impl/function/IteratorToIteratorFunctionWrapper.java
@@ -29,26 +29,26 @@
 
 public class IteratorToIteratorFunctionWrapper<T> implements IteratorToIteratorFunction<T> {
 
-	private final Function<?, ?> function;
+    private final Function<?, ?> function;
 
-	public IteratorToIteratorFunctionWrapper(Function<?, ?> function) {
-		this.function = function;
-	}
+    public IteratorToIteratorFunctionWrapper(Function<?, ?> function) {
+        this.function = function;
+    }
 
-	@SuppressWarnings("unchecked")
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> parentIterator) {
-		if (function instanceof ElementToIteratorFunction) {
-			return getOptionIterator((ElementToIteratorFunction<T>) function, parentIterator);
-		} else if (function instanceof IteratorToIteratorFunction) {
-			return ((IteratorToIteratorFunction<T>) function).apply(parentIterator);
-		} else {
-			throw new IllegalArgumentException("Don't know how to handle " + function.toString());
-		}
-	}
+    @SuppressWarnings("unchecked")
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> parentIterator) {
+        if (function instanceof ElementToIteratorFunction) {
+            return getOptionIterator((ElementToIteratorFunction<T>) function, parentIterator);
+        } else if (function instanceof IteratorToIteratorFunction) {
+            return ((IteratorToIteratorFunction<T>) function).apply(parentIterator);
+        } else {
+            throw new IllegalArgumentException("Don't know how to handle " + function.toString());
+        }
+    }
 
-	private static <T> Iterator<Option<T>> getOptionIterator(ElementToIteratorFunction<T> function,
-			Iterator<Option<T>> parentIterator) {
-		return new ExpandingIterator<>(function, parentIterator);
-	}
+    private static <T> Iterator<Option<T>> getOptionIterator(ElementToIteratorFunction<T> function,
+            Iterator<Option<T>> parentIterator) {
+        return new ExpandingIterator<>(function, parentIterator);
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/LastFunction.java b/src/main/java/org/apache/sling/query/impl/function/LastFunction.java
index 4fef072..2470f66 100644
--- a/src/main/java/org/apache/sling/query/impl/function/LastFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/LastFunction.java
@@ -27,9 +27,9 @@
 
 public class LastFunction<T> implements IteratorToIteratorFunction<T> {
 
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new LastIterator<>(input);
-	}
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
+        return new LastIterator<>(input);
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/NextFunction.java b/src/main/java/org/apache/sling/query/impl/function/NextFunction.java
index b12fc91..fd1923d 100644
--- a/src/main/java/org/apache/sling/query/impl/function/NextFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/NextFunction.java
@@ -29,21 +29,21 @@
 
 public class NextFunction<T> implements ElementToIteratorFunction<T> {
 
-	private final Predicate<T> until;
+    private final Predicate<T> until;
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public NextFunction(TreeProvider<T> provider) {
-		this(null, provider);
-	}
+    public NextFunction(TreeProvider<T> provider) {
+        this(null, provider);
+    }
 
-	public NextFunction(Predicate<T> until, TreeProvider<T> provider) {
-		this.until = until;
-		this.provider = provider;
-	}
+    public NextFunction(Predicate<T> until, TreeProvider<T> provider) {
+        this.until = until;
+        this.provider = provider;
+    }
 
-	@Override
-	public Iterator<T> apply(T resource) {
-		return new SiblingsIterator<>(until, resource, Type.NEXT, provider);
-	}
+    @Override
+    public Iterator<T> apply(T resource) {
+        return new SiblingsIterator<>(until, resource, Type.NEXT, provider);
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/impl/function/NotFunction.java b/src/main/java/org/apache/sling/query/impl/function/NotFunction.java
index 9062de0..7044295 100644
--- a/src/main/java/org/apache/sling/query/impl/function/NotFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/NotFunction.java
@@ -27,15 +27,15 @@
 
 public class NotFunction<T> implements IteratorToIteratorFunction<T> {
 
-	private IteratorToIteratorFunction<T> function;
+    private IteratorToIteratorFunction<T> function;
 
-	public NotFunction(IteratorToIteratorFunction<T> function) {
-		this.function = function;
-	}
+    public NotFunction(IteratorToIteratorFunction<T> function) {
+        this.function = function;
+    }
 
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new ReverseIterator<>(function, input);
-	}
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
+        return new ReverseIterator<>(function, input);
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/ParentFunction.java b/src/main/java/org/apache/sling/query/impl/function/ParentFunction.java
index bdf6a7a..a4479a2 100644
--- a/src/main/java/org/apache/sling/query/impl/function/ParentFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/ParentFunction.java
@@ -27,20 +27,20 @@
 
 public class ParentFunction<T> implements ElementToIteratorFunction<T> {
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public ParentFunction(TreeProvider<T> provider) {
-		this.provider = provider;
-	}
+    public ParentFunction(TreeProvider<T> provider) {
+        this.provider = provider;
+    }
 
-	@Override
-	public Iterator<T> apply(T element) {
-		T parent = provider.getParent(element);
-		if (parent == null) {
-			return IteratorUtils.emptyIterator();
-		} else {
-			return IteratorUtils.singleElementIterator(parent);
-		}
-	}
+    @Override
+    public Iterator<T> apply(T element) {
+        T parent = provider.getParent(element);
+        if (parent == null) {
+            return IteratorUtils.emptyIterator();
+        } else {
+            return IteratorUtils.singleElementIterator(parent);
+        }
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/ParentsFunction.java b/src/main/java/org/apache/sling/query/impl/function/ParentsFunction.java
index 0301aaa..3a9ead9 100644
--- a/src/main/java/org/apache/sling/query/impl/function/ParentsFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/ParentsFunction.java
@@ -28,18 +28,18 @@
 
 public class ParentsFunction<T> implements ElementToIteratorFunction<T> {
 
-	private final Predicate<T> until;
+    private final Predicate<T> until;
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public ParentsFunction(Predicate<T> until, TreeProvider<T> provider) {
-		this.until = until;
-		this.provider = provider;
-	}
+    public ParentsFunction(Predicate<T> until, TreeProvider<T> provider) {
+        this.until = until;
+        this.provider = provider;
+    }
 
-	@Override
-	public Iterator<T> apply(T resource) {
-		return new ParentsIterator<>(until, resource, provider);
-	}
+    @Override
+    public Iterator<T> apply(T resource) {
+        return new ParentsIterator<>(until, resource, provider);
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/PrevFunction.java b/src/main/java/org/apache/sling/query/impl/function/PrevFunction.java
index f8a0f1c..ede6cd1 100644
--- a/src/main/java/org/apache/sling/query/impl/function/PrevFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/PrevFunction.java
@@ -29,21 +29,21 @@
 
 public class PrevFunction<T> implements ElementToIteratorFunction<T> {
 
-	private final Predicate<T> until;
+    private final Predicate<T> until;
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public PrevFunction(TreeProvider<T> provider) {
-		this(null, provider);
-	}
+    public PrevFunction(TreeProvider<T> provider) {
+        this(null, provider);
+    }
 
-	public PrevFunction(Predicate<T> until, TreeProvider<T> provider) {
-		this.until = until;
-		this.provider = provider;
-	}
+    public PrevFunction(Predicate<T> until, TreeProvider<T> provider) {
+        this.until = until;
+        this.provider = provider;
+    }
 
-	@Override
-	public Iterator<T> apply(T resource) {
-		return new SiblingsIterator<>(until, resource, Type.PREV, provider);
-	}
+    @Override
+    public Iterator<T> apply(T resource) {
+        return new SiblingsIterator<>(until, resource, Type.PREV, provider);
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/impl/function/SiblingsFunction.java b/src/main/java/org/apache/sling/query/impl/function/SiblingsFunction.java
index 7af5fc8..b9298c8 100644
--- a/src/main/java/org/apache/sling/query/impl/function/SiblingsFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/SiblingsFunction.java
@@ -27,19 +27,19 @@
 
 public class SiblingsFunction<T> implements ElementToIteratorFunction<T> {
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public SiblingsFunction(TreeProvider<T> provider) {
-		this.provider = provider;
-	}
+    public SiblingsFunction(TreeProvider<T> provider) {
+        this.provider = provider;
+    }
 
-	@Override
-	public Iterator<T> apply(T resource) {
-		T parent = provider.getParent(resource);
-		if (parent == null) {
-			return IteratorUtils.singleElementIterator(resource);
-		} else {
-			return provider.listChildren(parent);
-		}
-	}
+    @Override
+    public Iterator<T> apply(T resource) {
+        T parent = provider.getParent(resource);
+        if (parent == null) {
+            return IteratorUtils.singleElementIterator(resource);
+        } else {
+            return provider.listChildren(parent);
+        }
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/function/SliceFunction.java b/src/main/java/org/apache/sling/query/impl/function/SliceFunction.java
index 60a0a44..aba90ad 100644
--- a/src/main/java/org/apache/sling/query/impl/function/SliceFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/SliceFunction.java
@@ -27,26 +27,26 @@
 
 public class SliceFunction<T> implements IteratorToIteratorFunction<T> {
 
-	private final int from;
+    private final int from;
 
-	private final Integer to;
+    private final Integer to;
 
-	public SliceFunction(int from, int to) {
-		this.from = from;
-		this.to = to;
-	}
+    public SliceFunction(int from, int to) {
+        this.from = from;
+        this.to = to;
+    }
 
-	public SliceFunction(int from) {
-		this.from = from;
-		this.to = null;
-	}
+    public SliceFunction(int from) {
+        this.from = from;
+        this.to = null;
+    }
 
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> resources) {
-		if (to == null) {
-			return new SliceIterator<>(resources, from);
-		} else {
-			return new SliceIterator<>(resources, from, to);
-		}
-	}
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> resources) {
+        if (to == null) {
+            return new SliceIterator<>(resources, from);
+        } else {
+            return new SliceIterator<>(resources, from, to);
+        }
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/impl/function/UniqueFunction.java b/src/main/java/org/apache/sling/query/impl/function/UniqueFunction.java
index 995fd6d..f9b8642 100644
--- a/src/main/java/org/apache/sling/query/impl/function/UniqueFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/function/UniqueFunction.java
@@ -27,9 +27,9 @@
 
 public class UniqueFunction<T> implements IteratorToIteratorFunction<T> {
 
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		return new UniqueIterator<>(input);
-	}
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
+        return new UniqueIterator<>(input);
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/AbstractIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/AbstractIterator.java
index d131b9a..6e3cdaa 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/AbstractIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/AbstractIterator.java
@@ -24,30 +24,30 @@
 
 public abstract class AbstractIterator<T> implements Iterator<T> {
 
-	private T currentElement;
+    private T currentElement;
 
-	@Override
-	public boolean hasNext() {
-		if (currentElement == null) {
-			currentElement = getElement();
-		}
-		return currentElement != null;
-	}
+    @Override
+    public boolean hasNext() {
+        if (currentElement == null) {
+            currentElement = getElement();
+        }
+        return currentElement != null;
+    }
 
-	@Override
-	public T next() {
-		if (!hasNext()) {
-			throw new NoSuchElementException();
-		}
-		T result = currentElement;
-		currentElement = null;
-		return result;
-	}
+    @Override
+    public T next() {
+        if (!hasNext()) {
+            throw new NoSuchElementException();
+        }
+        T result = currentElement;
+        currentElement = null;
+        return result;
+    }
 
-	@Override
-	public void remove() {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public void remove() {
+        throw new UnsupportedOperationException();
+    }
 
-	protected abstract T getElement();
+    protected abstract T getElement();
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/AdaptToIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/AdaptToIterator.java
index 6fb8f86..10bd7b0 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/AdaptToIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/AdaptToIterator.java
@@ -26,50 +26,50 @@
 
 public class AdaptToIterator<F, T> implements Iterator<T> {
 
-	private final Iterator<F> iterator;
+    private final Iterator<F> iterator;
 
-	private final Class<? extends T> clazz;
+    private final Class<? extends T> clazz;
 
-	private T currentModel;
+    private T currentModel;
 
-	public AdaptToIterator(Iterator<F> iterator, Class<? extends T> clazz) {
-		this.clazz = clazz;
-		this.iterator = iterator;
-	}
+    public AdaptToIterator(Iterator<F> iterator, Class<? extends T> clazz) {
+        this.clazz = clazz;
+        this.iterator = iterator;
+    }
 
-	@Override
-	public boolean hasNext() {
-		if (currentModel == null) {
-			getCurrentModel();
-		}
-		return currentModel != null;
-	}
+    @Override
+    public boolean hasNext() {
+        if (currentModel == null) {
+            getCurrentModel();
+        }
+        return currentModel != null;
+    }
 
-	@Override
-	public T next() {
-		if (!hasNext()) {
-			throw new NoSuchElementException();
-		}
-		T model = currentModel;
-		currentModel = null;
-		return model;
-	}
+    @Override
+    public T next() {
+        if (!hasNext()) {
+            throw new NoSuchElementException();
+        }
+        T model = currentModel;
+        currentModel = null;
+        return model;
+    }
 
-	public void getCurrentModel() {
-		while (iterator.hasNext()) {
-			F element = iterator.next();
-			if (element instanceof Adaptable) {
-				currentModel = ((Adaptable) element).adaptTo(clazz);
-			}
-			if (currentModel != null) {
-				break;
-			}
-		}
-	}
+    public void getCurrentModel() {
+        while (iterator.hasNext()) {
+            F element = iterator.next();
+            if (element instanceof Adaptable) {
+                currentModel = ((Adaptable) element).adaptTo(clazz);
+            }
+            if (currentModel != null) {
+                break;
+            }
+        }
+    }
 
-	@Override
-	public void remove() {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public void remove() {
+        throw new UnsupportedOperationException();
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/AlternativeIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/AlternativeIterator.java
index e4a72bf..683d494 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/AlternativeIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/AlternativeIterator.java
@@ -26,19 +26,19 @@
 
 public class AlternativeIterator<T> extends AbstractIterator<Option<T>> {
 
-	private final List<Iterator<Option<T>>> iterators;
+    private final List<Iterator<Option<T>>> iterators;
 
-	public AlternativeIterator(List<Iterator<Option<T>>> iterators) {
-		this.iterators = iterators;
-	}
+    public AlternativeIterator(List<Iterator<Option<T>>> iterators) {
+        this.iterators = iterators;
+    }
 
-	@Override
-	protected Option<T> getElement() {
-		for (Iterator<Option<T>> i : iterators) {
-			if (i.hasNext()) {
-				return i.next();
-			}
-		}
-		return null;
-	}
+    @Override
+    protected Option<T> getElement() {
+        for (Iterator<Option<T>> i : iterators) {
+            if (i.hasNext()) {
+                return i.next();
+            }
+        }
+        return null;
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/ArgumentResettingIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/ArgumentResettingIterator.java
index b12657f..19cfb4e 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/ArgumentResettingIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/ArgumentResettingIterator.java
@@ -25,28 +25,28 @@
 
 public class ArgumentResettingIterator<T> implements Iterator<Option<T>> {
 
-	private final Iterator<Option<T>> iterator;
+    private final Iterator<Option<T>> iterator;
 
-	private int index;
+    private int index;
 
-	public ArgumentResettingIterator(Iterator<Option<T>> iterator) {
-		this.iterator = iterator;
-		this.index = 0;
-	}
+    public ArgumentResettingIterator(Iterator<Option<T>> iterator) {
+        this.iterator = iterator;
+        this.index = 0;
+    }
 
-	@Override
-	public boolean hasNext() {
-		return iterator.hasNext();
-	}
+    @Override
+    public boolean hasNext() {
+        return iterator.hasNext();
+    }
 
-	@Override
-	public Option<T> next() {
-		return Option.of(iterator.next().getElement(), index++);
-	}
+    @Override
+    public Option<T> next() {
+        return Option.of(iterator.next().getElement(), index++);
+    }
 
-	@Override
-	public void remove() {
-		iterator.remove();
-	}
+    @Override
+    public void remove() {
+        iterator.remove();
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/DescendantsIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/DescendantsIterator.java
index 2074e03..d294545 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/DescendantsIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/DescendantsIterator.java
@@ -28,43 +28,43 @@
 
 public class DescendantsIterator<T> extends AbstractIterator<Option<T>> {
 
-	private final Iterator<Option<T>> input;
+    private final Iterator<Option<T>> input;
 
-	private Option<T> current;
+    private Option<T> current;
 
-	private Iterator<T> descendants;
+    private Iterator<T> descendants;
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public DescendantsIterator(Iterator<Option<T>> input, Iterator<T> descendants, TreeProvider<T> provider) {
-		this.input = input;
-		this.current = null;
-		this.descendants = new ArrayList<T>(new LazyList<T>(descendants)).iterator();
-		this.provider = provider;
-	}
+    public DescendantsIterator(Iterator<Option<T>> input, Iterator<T> descendants, TreeProvider<T> provider) {
+        this.input = input;
+        this.current = null;
+        this.descendants = new ArrayList<T>(new LazyList<T>(descendants)).iterator();
+        this.provider = provider;
+    }
 
-	@Override
-	protected Option<T> getElement() {
-		if (current == null) {
-			if (input.hasNext()) {
-				current = input.next();
-			} else {
-				return null;
-			}
-		}
-		return getDescendant();
-	}
+    @Override
+    protected Option<T> getElement() {
+        if (current == null) {
+            if (input.hasNext()) {
+                current = input.next();
+            } else {
+                return null;
+            }
+        }
+        return getDescendant();
+    }
 
-	private Option<T> getDescendant() {
-		while (descendants.hasNext()) {
-			T descendantCandidate = descendants.next();
-			if (provider.isDescendant(current.getElement(), descendantCandidate)) {
-				descendants.remove();
-				return Option.of(descendantCandidate, current.getArgumentId());
-			}
-		}
-		Option<T> result = Option.empty(current.getArgumentId());
-		current = null;
-		return result;
-	}
+    private Option<T> getDescendant() {
+        while (descendants.hasNext()) {
+            T descendantCandidate = descendants.next();
+            if (provider.isDescendant(current.getElement(), descendantCandidate)) {
+                descendants.remove();
+                return Option.of(descendantCandidate, current.getArgumentId());
+            }
+        }
+        Option<T> result = Option.empty(current.getArgumentId());
+        current = null;
+        return result;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/EmptyElementFilter.java b/src/main/java/org/apache/sling/query/impl/iterator/EmptyElementFilter.java
index 7334c03..39dedc1 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/EmptyElementFilter.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/EmptyElementFilter.java
@@ -25,21 +25,21 @@
 
 public class EmptyElementFilter<T> extends AbstractIterator<Option<T>> {
 
-	private final Iterator<Option<T>> input;
+    private final Iterator<Option<T>> input;
 
-	public EmptyElementFilter(Iterator<Option<T>> input) {
-		this.input = input;
-	}
+    public EmptyElementFilter(Iterator<Option<T>> input) {
+        this.input = input;
+    }
 
-	@Override
-	protected Option<T> getElement() {
-		while (input.hasNext()) {
-			Option<T> element = input.next();
-			if (!element.isEmpty()) {
-				return element;
-			}
-		}
-		return null;
-	}
+    @Override
+    protected Option<T> getElement() {
+        while (input.hasNext()) {
+            Option<T> element = input.next();
+            if (!element.isEmpty()) {
+                return element;
+            }
+        }
+        return null;
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/ExpandingIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/ExpandingIterator.java
index 8852405..253b94f 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/ExpandingIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/ExpandingIterator.java
@@ -25,41 +25,41 @@
 import org.apache.sling.query.api.internal.Option;
 
 /**
- * This iterator evaluates each element from the source iterator, expanding it using given function.
+ * This iterator evaluates each element from the source iterator, expanding it
+ * using given function.
  */
 public class ExpandingIterator<T> extends AbstractIterator<Option<T>> {
 
-	private final ElementToIteratorFunction<T> function;
+    private final ElementToIteratorFunction<T> function;
 
-	private final Iterator<Option<T>> parentIterator;
+    private final Iterator<Option<T>> parentIterator;
 
-	private Option<T> parentElement;
+    private Option<T> parentElement;
 
-	private Iterator<T> currentIterator;
+    private Iterator<T> currentIterator;
 
-	public ExpandingIterator(ElementToIteratorFunction<T> expandingFunction,
-			Iterator<Option<T>> sourceIterator) {
-		this.function = expandingFunction;
-		this.parentIterator = sourceIterator;
-	}
+    public ExpandingIterator(ElementToIteratorFunction<T> expandingFunction, Iterator<Option<T>> sourceIterator) {
+        this.function = expandingFunction;
+        this.parentIterator = sourceIterator;
+    }
 
-	@Override
-	protected Option<T> getElement() {
-		if (currentIterator != null && currentIterator.hasNext()) {
-			return Option.of(currentIterator.next(), parentElement.getArgumentId());
-		}
-		while (parentIterator.hasNext()) {
-			parentElement = parentIterator.next();
-			if (parentElement.isEmpty()) {
-				return parentElement;
-			}
-			currentIterator = function.apply(parentElement.getElement());
-			if (currentIterator.hasNext()) {
-				return getElement();
-			} else {
-				return Option.empty(parentElement.getArgumentId());
-			}
-		}
-		return null;
-	}
+    @Override
+    protected Option<T> getElement() {
+        if (currentIterator != null && currentIterator.hasNext()) {
+            return Option.of(currentIterator.next(), parentElement.getArgumentId());
+        }
+        while (parentIterator.hasNext()) {
+            parentElement = parentIterator.next();
+            if (parentElement.isEmpty()) {
+                return parentElement;
+            }
+            currentIterator = function.apply(parentElement.getElement());
+            if (currentIterator.hasNext()) {
+                return getElement();
+            } else {
+                return Option.empty(parentElement.getArgumentId());
+            }
+        }
+        return null;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/FilteringIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/FilteringIterator.java
index 59a34af..8b8f3e6 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/FilteringIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/FilteringIterator.java
@@ -26,25 +26,25 @@
 
 public class FilteringIterator<T> extends AbstractIterator<Option<T>> {
 
-	private final Iterator<Option<T>> iterator;
+    private final Iterator<Option<T>> iterator;
 
-	private final Predicate<T> predicate;
+    private final Predicate<T> predicate;
 
-	public FilteringIterator(Iterator<Option<T>> iterator, Predicate<T> predicate) {
-		this.iterator = iterator;
-		this.predicate = predicate;
-	}
+    public FilteringIterator(Iterator<Option<T>> iterator, Predicate<T> predicate) {
+        this.iterator = iterator;
+        this.predicate = predicate;
+    }
 
-	@Override
-	protected Option<T> getElement() {
-		while (iterator.hasNext()) {
-			Option<T> element = iterator.next();
-			if (element.isEmpty() || predicate.test(element.getElement())) {
-				return element;
-			} else {
-				return Option.empty(element.getArgumentId());
-			}
-		}
-		return null;
-	}
+    @Override
+    protected Option<T> getElement() {
+        while (iterator.hasNext()) {
+            Option<T> element = iterator.next();
+            if (element.isEmpty() || predicate.test(element.getElement())) {
+                return element;
+            } else {
+                return Option.empty(element.getArgumentId());
+            }
+        }
+        return null;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/MergingIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/MergingIterator.java
index 9e51630..1c38496 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/MergingIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/MergingIterator.java
@@ -23,24 +23,24 @@
 
 public class MergingIterator<T> extends AbstractIterator<T> {
 
-	private final Iterator<T>[] iterators;
+    private final Iterator<T>[] iterators;
 
-	private int index = 0;
+    private int index = 0;
 
-	public MergingIterator(Iterator<T>... iterators) {
-		this.iterators = iterators;
-	}
+    public MergingIterator(Iterator<T>... iterators) {
+        this.iterators = iterators;
+    }
 
-	@Override
-	protected T getElement() {
-		while (index < iterators.length) {
-			if (iterators[index].hasNext()) {
-				return iterators[index].next();
-			} else {
-				index++;
-			}
-		}
-		return null;
-	}
+    @Override
+    protected T getElement() {
+        while (index < iterators.length) {
+            if (iterators[index].hasNext()) {
+                return iterators[index].next();
+            } else {
+                index++;
+            }
+        }
+        return null;
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/OptionDecoratingIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/OptionDecoratingIterator.java
index 023dcc5..09024f3 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/OptionDecoratingIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/OptionDecoratingIterator.java
@@ -25,28 +25,28 @@
 
 public class OptionDecoratingIterator<T> implements Iterator<Option<T>> {
 
-	private final Iterator<T> iterator;
+    private final Iterator<T> iterator;
 
-	private int index;
+    private int index;
 
-	public OptionDecoratingIterator(Iterator<T> iterator) {
-		this.iterator = iterator;
-		this.index = 0;
-	}
+    public OptionDecoratingIterator(Iterator<T> iterator) {
+        this.iterator = iterator;
+        this.index = 0;
+    }
 
-	@Override
-	public boolean hasNext() {
-		return iterator.hasNext();
-	}
+    @Override
+    public boolean hasNext() {
+        return iterator.hasNext();
+    }
 
-	@Override
-	public Option<T> next() {
-		return Option.of(iterator.next(), index++);
-	}
+    @Override
+    public Option<T> next() {
+        return Option.of(iterator.next(), index++);
+    }
 
-	@Override
-	public void remove() {
-		iterator.remove();
-	}
+    @Override
+    public void remove() {
+        iterator.remove();
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/OptionStrippingIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/OptionStrippingIterator.java
index 9738888..a776a7f 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/OptionStrippingIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/OptionStrippingIterator.java
@@ -25,24 +25,24 @@
 
 public class OptionStrippingIterator<T> implements Iterator<T> {
 
-	private final Iterator<Option<T>> iterator;
+    private final Iterator<Option<T>> iterator;
 
-	public OptionStrippingIterator(Iterator<Option<T>> iterator) {
-		this.iterator = iterator;
-	}
+    public OptionStrippingIterator(Iterator<Option<T>> iterator) {
+        this.iterator = iterator;
+    }
 
-	@Override
-	public boolean hasNext() {
-		return iterator.hasNext();
-	}
+    @Override
+    public boolean hasNext() {
+        return iterator.hasNext();
+    }
 
-	@Override
-	public T next() {
-		return iterator.next().getElement();
-	}
+    @Override
+    public T next() {
+        return iterator.next().getElement();
+    }
 
-	@Override
-	public void remove() {
-		iterator.remove();
-	}
+    @Override
+    public void remove() {
+        iterator.remove();
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/ParentsIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/ParentsIterator.java
index 258b39b..6a1903c 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/ParentsIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/ParentsIterator.java
@@ -25,34 +25,34 @@
 
 public class ParentsIterator<T> extends AbstractIterator<T> {
 
-	private final Predicate<T> until;
+    private final Predicate<T> until;
 
-	private final TreeProvider<T> provider;
-	
-	private T currentResource;
+    private final TreeProvider<T> provider;
 
-	public ParentsIterator(Predicate<T> until, T currentResource, TreeProvider<T> provider) {
-		this.currentResource = currentResource;
-		this.until = until;
-		this.provider = provider;
-	}
+    private T currentResource;
 
-	@Override
-	protected T getElement() {
-		if (currentResource == null) {
-			return null;
-		}
-		currentResource = provider.getParent(currentResource);
+    public ParentsIterator(Predicate<T> until, T currentResource, TreeProvider<T> provider) {
+        this.currentResource = currentResource;
+        this.until = until;
+        this.provider = provider;
+    }
 
-		if (currentResource == null) {
-			return null;
-		}
+    @Override
+    protected T getElement() {
+        if (currentResource == null) {
+            return null;
+        }
+        currentResource = provider.getParent(currentResource);
 
-		if (until != null && until.test(currentResource)) {
-			return null;
-		}
+        if (currentResource == null) {
+            return null;
+        }
 
-		return currentResource;
-	}
+        if (until != null && until.test(currentResource)) {
+            return null;
+        }
+
+        return currentResource;
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/ReverseIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/ReverseIterator.java
index 89ae0a8..1615338 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/ReverseIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/ReverseIterator.java
@@ -27,30 +27,30 @@
 
 public class ReverseIterator<T> extends AbstractIterator<Option<T>> {
 
-	private final Iterator<Option<T>> filtered;
+    private final Iterator<Option<T>> filtered;
 
-	private final Iterator<Option<T>> original;
+    private final Iterator<Option<T>> original;
 
-	public ReverseIterator(IteratorToIteratorFunction<T> function, Iterator<Option<T>> input) {
-		LazyList<Option<T>> lazyList = new LazyList<Option<T>>(input);
-		filtered = function.apply(lazyList.listIterator());
-		original = lazyList.listIterator();
-	}
+    public ReverseIterator(IteratorToIteratorFunction<T> function, Iterator<Option<T>> input) {
+        LazyList<Option<T>> lazyList = new LazyList<Option<T>>(input);
+        filtered = function.apply(lazyList.listIterator());
+        original = lazyList.listIterator();
+    }
 
-	@Override
-	protected Option<T> getElement() {
-		if (original.hasNext()) {
-			Option<T> originalElement = original.next();
-			Option<T> filteredElement = null;
-			if (filtered.hasNext()) {
-				filteredElement = filtered.next();
-			}
-			if (filteredElement == null || filteredElement.isEmpty()) {
-				return originalElement;
-			} else {
-				return Option.empty(originalElement.getArgumentId());
-			}
-		}
-		return null;
-	}
+    @Override
+    protected Option<T> getElement() {
+        if (original.hasNext()) {
+            Option<T> originalElement = original.next();
+            Option<T> filteredElement = null;
+            if (filtered.hasNext()) {
+                filteredElement = filtered.next();
+            }
+            if (filteredElement == null || filteredElement.isEmpty()) {
+                return originalElement;
+            } else {
+                return Option.empty(originalElement.getArgumentId());
+            }
+        }
+        return null;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/SiblingsIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/SiblingsIterator.java
index f60bf1c..446b735 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/SiblingsIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/SiblingsIterator.java
@@ -29,91 +29,91 @@
 
 public class SiblingsIterator<T> extends AbstractIterator<T> {
 
-	private final Predicate<T> until;
+    private final Predicate<T> until;
 
-	private final ListIterator<T> siblings;
+    private final ListIterator<T> siblings;
 
-	private final Type type;
+    private final Type type;
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	private boolean finished;
+    private boolean finished;
 
-	public SiblingsIterator(Predicate<T> until, T resource, Type type, TreeProvider<T> provider) {
-		this.provider = provider;
-		this.until = until;
-		this.siblings = getRewindedIterator(resource, type);
-		this.finished = false;
-		this.type = type;
-	}
+    public SiblingsIterator(Predicate<T> until, T resource, Type type, TreeProvider<T> provider) {
+        this.provider = provider;
+        this.until = until;
+        this.siblings = getRewindedIterator(resource, type);
+        this.finished = false;
+        this.type = type;
+    }
 
-	@Override
-	protected T getElement() {
-		if (finished) {
-			return null;
-		}
-		while (type.canAdvance(siblings)) {
-			T resource = type.advance(siblings);
-			if (until != null && until.test(resource)) {
-				finished = true;
-				return null;
-			}
-			if (until == null) {
-				finished = true;
-			}
-			return resource;
-		}
-		return null;
-	}
+    @Override
+    protected T getElement() {
+        if (finished) {
+            return null;
+        }
+        while (type.canAdvance(siblings)) {
+            T resource = type.advance(siblings);
+            if (until != null && until.test(resource)) {
+                finished = true;
+                return null;
+            }
+            if (until == null) {
+                finished = true;
+            }
+            return resource;
+        }
+        return null;
+    }
 
-	private ListIterator<T> getRewindedIterator(T resource, Type type) {
-		String resourceName = provider.getName(resource);
-		T parent = provider.getParent(resource);
-		Iterator<T> iterator;
-		if (parent == null) {
-			iterator = IteratorUtils.singleElementIterator(resource);
-		} else {
-			iterator = provider.listChildren(parent);
-		}
-		ListIterator<T> listIterator = new LazyList<T>(iterator).listIterator();
-		while (listIterator.hasNext()) {
-			T sibling = listIterator.next();
-			if (provider.getName(sibling).equals(resourceName)) {
-				break;
-			}
-		}
-		if (type == Type.PREV) {
-			listIterator.previous();
-		}
-		return listIterator;
-	}
+    private ListIterator<T> getRewindedIterator(T resource, Type type) {
+        String resourceName = provider.getName(resource);
+        T parent = provider.getParent(resource);
+        Iterator<T> iterator;
+        if (parent == null) {
+            iterator = IteratorUtils.singleElementIterator(resource);
+        } else {
+            iterator = provider.listChildren(parent);
+        }
+        ListIterator<T> listIterator = new LazyList<T>(iterator).listIterator();
+        while (listIterator.hasNext()) {
+            T sibling = listIterator.next();
+            if (provider.getName(sibling).equals(resourceName)) {
+                break;
+            }
+        }
+        if (type == Type.PREV) {
+            listIterator.previous();
+        }
+        return listIterator;
+    }
 
-	public enum Type {
-		NEXT {
-			@Override
-			public boolean canAdvance(ListIterator<?> iterator) {
-				return iterator.hasNext();
-			}
+    public enum Type {
+        NEXT {
+            @Override
+            public boolean canAdvance(ListIterator<?> iterator) {
+                return iterator.hasNext();
+            }
 
-			@Override
-			public <T> T advance(ListIterator<T> iterator) {
-				return iterator.next();
-			}
-		},
-		PREV {
-			@Override
-			public boolean canAdvance(ListIterator<?> iterator) {
-				return iterator.hasPrevious();
-			}
+            @Override
+            public <T> T advance(ListIterator<T> iterator) {
+                return iterator.next();
+            }
+        },
+        PREV {
+            @Override
+            public boolean canAdvance(ListIterator<?> iterator) {
+                return iterator.hasPrevious();
+            }
 
-			@Override
-			public <T> T advance(ListIterator<T> iterator) {
-				return iterator.previous();
-			}
-		};
+            @Override
+            public <T> T advance(ListIterator<T> iterator) {
+                return iterator.previous();
+            }
+        };
 
-		public abstract boolean canAdvance(ListIterator<?> iterator);
+        public abstract boolean canAdvance(ListIterator<?> iterator);
 
-		public abstract <T> T advance(ListIterator<T> iterator);
-	}
+        public abstract <T> T advance(ListIterator<T> iterator);
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/SliceIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/SliceIterator.java
index 1835d0f..87d6655 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/SliceIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/SliceIterator.java
@@ -25,42 +25,42 @@
 
 public class SliceIterator<T> extends AbstractIterator<Option<T>> {
 
-	private final Iterator<Option<T>> iterator;
+    private final Iterator<Option<T>> iterator;
 
-	private final int from;
+    private final int from;
 
-	private final int to;
+    private final int to;
 
-	private int current;
+    private int current;
 
-	public SliceIterator(Iterator<Option<T>> iterator, int from, int to) {
-		this.iterator = iterator;
-		this.current = -1;
-		this.from = from;
-		this.to = to;
-	}
+    public SliceIterator(Iterator<Option<T>> iterator, int from, int to) {
+        this.iterator = iterator;
+        this.current = -1;
+        this.from = from;
+        this.to = to;
+    }
 
-	public SliceIterator(Iterator<Option<T>> iterator, int from) {
-		this(iterator, from, Integer.MAX_VALUE);
-	}
+    public SliceIterator(Iterator<Option<T>> iterator, int from) {
+        this(iterator, from, Integer.MAX_VALUE);
+    }
 
-	@Override
-	protected Option<T> getElement() {
-		if (current > to) {
-			return null;
-		}
+    @Override
+    protected Option<T> getElement() {
+        if (current > to) {
+            return null;
+        }
 
-		if (iterator.hasNext()) {
-			Option<T> element = iterator.next();
-			if (element.isEmpty()) {
-				return element;
-			}
-			if (++current >= from && current <= to) {
-				return element;
-			} else {
-				return Option.empty(element.getArgumentId());
-			}
-		}
-		return null;
-	}
+        if (iterator.hasNext()) {
+            Option<T> element = iterator.next();
+            if (element.isEmpty()) {
+                return element;
+            }
+            if (++current >= from && current <= to) {
+                return element;
+            } else {
+                return Option.empty(element.getArgumentId());
+            }
+        }
+        return null;
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/SuppIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/SuppIterator.java
index 42c8c7a..8bd6fa8 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/SuppIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/SuppIterator.java
@@ -33,57 +33,57 @@
  */
 public class SuppIterator<T> extends AbstractIterator<Option<T>> {
 
-	private final List<Option<T>> input;
+    private final List<Option<T>> input;
 
-	private final Iterator<Option<T>> output;
+    private final Iterator<Option<T>> output;
 
-	private Option<T> outputElement;
+    private Option<T> outputElement;
 
-	private int currentIndex = 0;
+    private int currentIndex = 0;
 
-	public SuppIterator(List<Option<T>> input, IteratorToIteratorFunction<T> function) {
-		this.input = input;
-		this.output = function.apply(new ArgumentResettingIterator<T>(input.iterator()));
-	}
+    public SuppIterator(List<Option<T>> input, IteratorToIteratorFunction<T> function) {
+        this.input = input;
+        this.output = function.apply(new ArgumentResettingIterator<T>(input.iterator()));
+    }
 
-	/**
-	 * The idea behind this method is that index of each element in the input
-	 * iterator is passed to the function. One or more Option<T> items for each
-	 * index will be returned. If any Option<T> item in that index set is not
-	 * empty then the corresponding element in the input will be returned.
-	 */
-	@Override
-	protected Option<T> getElement() {
-		if (outputElement == null) {
-			if (!output.hasNext()) {
-				return null;
-			}
-			outputElement = output.next();
-		}
+    /**
+     * The idea behind this method is that index of each element in the input
+     * iterator is passed to the function. One or more Option<T> items for each
+     * index will be returned. If any Option<T> item in that index set is not empty
+     * then the corresponding element in the input will be returned.
+     */
+    @Override
+    protected Option<T> getElement() {
+        if (outputElement == null) {
+            if (!output.hasNext()) {
+                return null;
+            }
+            outputElement = output.next();
+        }
 
-		int outputIndex = outputElement.getArgumentId();
-		boolean emptyResponse = outputElement.isEmpty();
+        int outputIndex = outputElement.getArgumentId();
+        boolean emptyResponse = outputElement.isEmpty();
 
-		//loop to next index or end of list
-		while (outputIndex <= currentIndex && output.hasNext()) {
-			if (emptyResponse) {
-				emptyResponse = outputElement.isEmpty();
-			}
-			outputElement = output.next();
-			outputIndex = outputElement.getArgumentId();
-		}
+        // loop to next index or end of list
+        while (outputIndex <= currentIndex && output.hasNext()) {
+            if (emptyResponse) {
+                emptyResponse = outputElement.isEmpty();
+            }
+            outputElement = output.next();
+            outputIndex = outputElement.getArgumentId();
+        }
 
-		if (emptyResponse) {
-			if (outputIndex > currentIndex) {
-				return Option.empty(currentIndex++);
-			}
-			return null;
-		}
+        if (emptyResponse) {
+            if (outputIndex > currentIndex) {
+                return Option.empty(currentIndex++);
+            }
+            return null;
+        }
 
-		if (outputIndex <= currentIndex) {
-			outputElement = null;
-		}
-		return input.get(currentIndex++);
-	}
+        if (outputIndex <= currentIndex) {
+            outputElement = null;
+        }
+        return input.get(currentIndex++);
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/UniqueIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/UniqueIterator.java
index 206ae4c..97dedcc 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/UniqueIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/UniqueIterator.java
@@ -35,29 +35,29 @@
  */
 public class UniqueIterator<T> extends AbstractIterator<Option<T>> {
 
-	private Iterator<Option<T>> iterator;
+    private Iterator<Option<T>> iterator;
 
-	private Set<T> seen;
+    private Set<T> seen;
 
-	public UniqueIterator(Iterator<Option<T>> input) {
-		this.iterator = input;
-		seen = new HashSet<>();
-	}
+    public UniqueIterator(Iterator<Option<T>> input) {
+        this.iterator = input;
+        seen = new HashSet<>();
+    }
 
-	@Override
-	protected Option<T> getElement() {
-		if (!iterator.hasNext()) {
-			iterator = Collections.emptyIterator();
-			seen = null;
-			return null;
-		}
-		Option<T> candidate = iterator.next();
-		if (!candidate.isEmpty()) {
-			if (!seen.add(candidate.getElement())) {
-				return Option.empty(candidate.getArgumentId());
-			}
-		}
-		return candidate;
-	}
+    @Override
+    protected Option<T> getElement() {
+        if (!iterator.hasNext()) {
+            iterator = Collections.emptyIterator();
+            seen = null;
+            return null;
+        }
+        Option<T> candidate = iterator.next();
+        if (!candidate.isEmpty()) {
+            if (!seen.add(candidate.getElement())) {
+                return Option.empty(candidate.getArgumentId());
+            }
+        }
+        return candidate;
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/WarningIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/WarningIterator.java
index 08f383a..ea042aa 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/WarningIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/WarningIterator.java
@@ -26,36 +26,36 @@
 
 public class WarningIterator<T> extends AbstractIterator<T> {
 
-	private static final Logger LOG = LoggerFactory.getLogger("SlingQuery");
+    private static final Logger LOG = LoggerFactory.getLogger("SlingQuery");
 
-	private static final int DEFAULT_LIMIT = 100;
+    private static final int DEFAULT_LIMIT = 100;
 
-	private final Iterator<T> iterator;
+    private final Iterator<T> iterator;
 
-	private final int limit;
+    private final int limit;
 
-	private int count = 0;
+    private int count = 0;
 
-	public WarningIterator(Iterator<T> iterator) {
-		this(iterator, DEFAULT_LIMIT);
-	}
+    public WarningIterator(Iterator<T> iterator) {
+        this(iterator, DEFAULT_LIMIT);
+    }
 
-	public WarningIterator(Iterator<T> iterator, int limit) {
-		this.iterator = iterator;
-		this.limit = limit;
-	}
+    public WarningIterator(Iterator<T> iterator, int limit) {
+        this.iterator = iterator;
+        this.limit = limit;
+    }
 
-	@Override
-	protected T getElement() {
-		if (!iterator.hasNext()) {
-			return null;
-		}
-		if (count++ == limit) {
-			LOG.warn(
-					"Number of processed resources exceeded {}. Consider using a JCR query instead of SlingQuery. More info here: https://s.apache.org/oana",
-					new Object[] { limit });
-		}
-		return iterator.next();
-	}
+    @Override
+    protected T getElement() {
+        if (!iterator.hasNext()) {
+            return null;
+        }
+        if (count++ == limit) {
+            LOG.warn(
+                    "Number of processed resources exceeded {}. Consider using a JCR query instead of SlingQuery. More info here: https://s.apache.org/oana",
+                    new Object[] { limit });
+        }
+        return iterator.next();
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/tree/BfsTreeIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/tree/BfsTreeIterator.java
index a37ad4f..968afe4 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/tree/BfsTreeIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/tree/BfsTreeIterator.java
@@ -28,30 +28,30 @@
 
 public class BfsTreeIterator<T> extends AbstractIterator<T> {
 
-	private final Deque<T> queue = new LinkedList<T>();
+    private final Deque<T> queue = new LinkedList<T>();
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	private Iterator<T> currentIterator;
+    private Iterator<T> currentIterator;
 
-	public BfsTreeIterator(T root, TreeProvider<T> provider) {
-		this.currentIterator = provider.listChildren(root);
-		this.provider = provider;
-	}
+    public BfsTreeIterator(T root, TreeProvider<T> provider) {
+        this.currentIterator = provider.listChildren(root);
+        this.provider = provider;
+    }
 
-	@Override
-	protected T getElement() {
-		if (currentIterator.hasNext()) {
-			T resource = currentIterator.next();
-			queue.add(resource);
-			return resource;
-		}
+    @Override
+    protected T getElement() {
+        if (currentIterator.hasNext()) {
+            T resource = currentIterator.next();
+            queue.add(resource);
+            return resource;
+        }
 
-		if (!queue.isEmpty()) {
-			currentIterator = provider.listChildren(queue.pop());
-			return getElement();
-		}
+        if (!queue.isEmpty()) {
+            currentIterator = provider.listChildren(queue.pop());
+            return getElement();
+        }
 
-		return null;
-	}
+        return null;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/iterator/tree/DfsTreeIterator.java b/src/main/java/org/apache/sling/query/impl/iterator/tree/DfsTreeIterator.java
index 2c24658..23fdb96 100644
--- a/src/main/java/org/apache/sling/query/impl/iterator/tree/DfsTreeIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/iterator/tree/DfsTreeIterator.java
@@ -28,27 +28,27 @@
 
 public class DfsTreeIterator<T> extends AbstractIterator<T> {
 
-	private final Deque<Iterator<T>> queue = new LinkedList<Iterator<T>>();
+    private final Deque<Iterator<T>> queue = new LinkedList<Iterator<T>>();
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public DfsTreeIterator(T root, TreeProvider<T> provider) {
-		this.provider = provider;
-		queue.add(provider.listChildren(root));
-	}
+    public DfsTreeIterator(T root, TreeProvider<T> provider) {
+        this.provider = provider;
+        queue.add(provider.listChildren(root));
+    }
 
-	@Override
-	protected T getElement() {
-		if (queue.isEmpty()) {
-			return null;
-		}
-		if (queue.peekLast().hasNext()) {
-			T next = queue.peekLast().next();
-			queue.add(provider.listChildren(next));
-			return next;
-		} else {
-			queue.pollLast();
-			return getElement();
-		}
-	}
+    @Override
+    protected T getElement() {
+        if (queue.isEmpty()) {
+            return null;
+        }
+        if (queue.peekLast().hasNext()) {
+            T next = queue.peekLast().next();
+            queue.add(provider.listChildren(next));
+            return next;
+        } else {
+            queue.pollLast();
+            return getElement();
+        }
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/predicate/IterableContainsPredicate.java b/src/main/java/org/apache/sling/query/impl/predicate/IterableContainsPredicate.java
index 4466fd2..942276a 100644
--- a/src/main/java/org/apache/sling/query/impl/predicate/IterableContainsPredicate.java
+++ b/src/main/java/org/apache/sling/query/impl/predicate/IterableContainsPredicate.java
@@ -26,22 +26,22 @@
 
 public class IterableContainsPredicate<T> implements Predicate<T> {
 
-	private final Iterable<T> iterable;
+    private final Iterable<T> iterable;
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public IterableContainsPredicate(Iterable<T> iterable, TreeProvider<T> provider) {
-		this.iterable = new LazyList<T>(iterable.iterator());
-		this.provider = provider;
-	}
+    public IterableContainsPredicate(Iterable<T> iterable, TreeProvider<T> provider) {
+        this.iterable = new LazyList<T>(iterable.iterator());
+        this.provider = provider;
+    }
 
-	@Override
-	public boolean test(T element) {
-		for (T t : iterable) {
-			if (provider.sameElement(t, element)) {
-				return true;
-			}
-		}
-		return false;
-	}
+    @Override
+    public boolean test(T element) {
+        for (T t : iterable) {
+            if (provider.sameElement(t, element)) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/predicate/ParentPredicate.java b/src/main/java/org/apache/sling/query/impl/predicate/ParentPredicate.java
index 3a78f43..95884e3 100644
--- a/src/main/java/org/apache/sling/query/impl/predicate/ParentPredicate.java
+++ b/src/main/java/org/apache/sling/query/impl/predicate/ParentPredicate.java
@@ -25,15 +25,15 @@
 
 public class ParentPredicate<T> implements Predicate<T> {
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	public ParentPredicate(TreeProvider<T> provider) {
-		this.provider = provider;
-	}
+    public ParentPredicate(TreeProvider<T> provider) {
+        this.provider = provider;
+    }
 
-	@Override
-	public boolean test(T resource) {
-		return provider.listChildren(resource).hasNext();
-	}
+    @Override
+    public boolean test(T resource) {
+        return provider.listChildren(resource).hasNext();
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/predicate/RejectingPredicate.java b/src/main/java/org/apache/sling/query/impl/predicate/RejectingPredicate.java
index 68b6704..31c82cf 100644
--- a/src/main/java/org/apache/sling/query/impl/predicate/RejectingPredicate.java
+++ b/src/main/java/org/apache/sling/query/impl/predicate/RejectingPredicate.java
@@ -23,18 +23,18 @@
 
 public class RejectingPredicate<T> implements Predicate<T> {
 
-	private final Predicate<T> predicate;
+    private final Predicate<T> predicate;
 
-	public RejectingPredicate() {
-		this(resource -> true);
-	}
+    public RejectingPredicate() {
+        this(resource -> true);
+    }
 
-	public RejectingPredicate(Predicate<T> predicate) {
-		this.predicate = predicate;
-	}
+    public RejectingPredicate(Predicate<T> predicate) {
+        this.predicate = predicate;
+    }
 
-	@Override
-	public boolean test(T value) {
-		return !predicate.test(value);
-	}
+    @Override
+    public boolean test(T value) {
+        return !predicate.test(value);
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/predicate/SelectorOperator.java b/src/main/java/org/apache/sling/query/impl/predicate/SelectorOperator.java
index 19da3b5..e17d835 100644
--- a/src/main/java/org/apache/sling/query/impl/predicate/SelectorOperator.java
+++ b/src/main/java/org/apache/sling/query/impl/predicate/SelectorOperator.java
@@ -24,59 +24,59 @@
 import org.apache.commons.lang.StringUtils;
 
 public enum SelectorOperator {
-	CONTAINS("*=") {
-		@Override
-		public boolean accepts(String property, String value) {
-			return StringUtils.contains(property, value);
-		}
-	},
-	CONTAINS_WORD("~=") {
-		@Override
-		public boolean accepts(String property, String value) {
-			String quoted = Pattern.quote(value);
-			String regex = String.format("(^| )%s( |$)", quoted);
-			return property != null && Pattern.compile(regex).matcher(property).find();
-		}
-	},
-	ENDS_WITH("$=") {
-		@Override
-		public boolean accepts(String property, String value) {
-			return StringUtils.endsWith(property, value);
-		}
-	},
-	EQUALS("=") {
-		@Override
-		public boolean accepts(String property, String value) {
-			return StringUtils.equals(property, value);
-		}
-	},
-	NOT_EQUAL("!=") {
-		@Override
-		public boolean accepts(String property, String value) {
-			return !StringUtils.equals(property, value);
-		}
-	},
-	STARTS_WITH("^=") {
-		@Override
-		public boolean accepts(String property, String value) {
-			return StringUtils.startsWith(property, value);
-		}
-	};
+    CONTAINS("*=") {
+        @Override
+        public boolean accepts(String property, String value) {
+            return StringUtils.contains(property, value);
+        }
+    },
+    CONTAINS_WORD("~=") {
+        @Override
+        public boolean accepts(String property, String value) {
+            String quoted = Pattern.quote(value);
+            String regex = String.format("(^| )%s( |$)", quoted);
+            return property != null && Pattern.compile(regex).matcher(property).find();
+        }
+    },
+    ENDS_WITH("$=") {
+        @Override
+        public boolean accepts(String property, String value) {
+            return StringUtils.endsWith(property, value);
+        }
+    },
+    EQUALS("=") {
+        @Override
+        public boolean accepts(String property, String value) {
+            return StringUtils.equals(property, value);
+        }
+    },
+    NOT_EQUAL("!=") {
+        @Override
+        public boolean accepts(String property, String value) {
+            return !StringUtils.equals(property, value);
+        }
+    },
+    STARTS_WITH("^=") {
+        @Override
+        public boolean accepts(String property, String value) {
+            return StringUtils.startsWith(property, value);
+        }
+    };
 
-	private final String operator;
+    private final String operator;
 
-	SelectorOperator(String operator) {
-		this.operator = operator;
-	}
+    SelectorOperator(String operator) {
+        this.operator = operator;
+    }
 
-	public abstract boolean accepts(String key, String value);
+    public abstract boolean accepts(String key, String value);
 
-	public static SelectorOperator getSelectorOperator(String operator) {
-		for (SelectorOperator o : values()) {
-			if (o.operator.equals(operator)) {
-				return o;
-			}
-		}
-		return EQUALS;
-	}
+    public static SelectorOperator getSelectorOperator(String operator) {
+        for (SelectorOperator o : values()) {
+            if (o.operator.equals(operator)) {
+                return o;
+            }
+        }
+        return EQUALS;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/resource/ResourcePredicate.java b/src/main/java/org/apache/sling/query/impl/resource/ResourcePredicate.java
index a0511a8..913eca2 100644
--- a/src/main/java/org/apache/sling/query/impl/resource/ResourcePredicate.java
+++ b/src/main/java/org/apache/sling/query/impl/resource/ResourcePredicate.java
@@ -35,65 +35,65 @@
 
 public class ResourcePredicate implements Predicate<Resource> {
 
-	private static final Logger LOG = LoggerFactory.getLogger(ResourcePredicate.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ResourcePredicate.class);
 
-	private final String resourceType;
+    private final String resourceType;
 
-	private final String resourceName;
+    private final String resourceName;
 
-	private final List<Predicate<Resource>> subPredicates;
+    private final List<Predicate<Resource>> subPredicates;
 
-	private JcrTypeResolver typeResolver;
+    private JcrTypeResolver typeResolver;
 
-	public ResourcePredicate(String resourceType, String resourceName, List<Attribute> attributes,
-			JcrTypeResolver typeResolver) {
-		this.resourceType = resourceType;
-		this.resourceName = resourceName;
-		this.subPredicates = new ArrayList<>();
-		for (Attribute a : attributes) {
-			subPredicates.add(new ResourcePropertyPredicate(a));
-		}
-		this.typeResolver = typeResolver;
-	}
+    public ResourcePredicate(String resourceType, String resourceName, List<Attribute> attributes,
+            JcrTypeResolver typeResolver) {
+        this.resourceType = resourceType;
+        this.resourceName = resourceName;
+        this.subPredicates = new ArrayList<>();
+        for (Attribute a : attributes) {
+            subPredicates.add(new ResourcePropertyPredicate(a));
+        }
+        this.typeResolver = typeResolver;
+    }
 
-	@Override
-	public boolean test(Resource resource) {
-		if (StringUtils.isNotBlank(resourceName) && !resource.getName().equals(resourceName)) {
-			return false;
-		}
-		if (!isResourceType(resource, resourceType)) {
-			return false;
-		}
-		for (Predicate<Resource> predicate : subPredicates) {
-			if (!predicate.test(resource)) {
-				return false;
-			}
-		}
-		return true;
-	}
+    @Override
+    public boolean test(Resource resource) {
+        if (StringUtils.isNotBlank(resourceName) && !resource.getName().equals(resourceName)) {
+            return false;
+        }
+        if (!isResourceType(resource, resourceType)) {
+            return false;
+        }
+        for (Predicate<Resource> predicate : subPredicates) {
+            if (!predicate.test(resource)) {
+                return false;
+            }
+        }
+        return true;
+    }
 
-	private boolean isResourceType(Resource resource, String resourceType) {
-		if (StringUtils.isBlank(resourceType)) {
-			return true;
-		}
-		if (resource.isResourceType(resourceType)) {
-			return true;
-		}
-		if (!isValidType(resourceType)) {
-			return false;
-		}
-		Node node = resource.adaptTo(Node.class);
-		try {
-			if (node != null) {
-				return node.isNodeType(resourceType);
-			}
-		} catch (RepositoryException e) {
-			LOG.error("Can't check node type", e);
-		}
-		return false;
-	}
+    private boolean isResourceType(Resource resource, String resourceType) {
+        if (StringUtils.isBlank(resourceType)) {
+            return true;
+        }
+        if (resource.isResourceType(resourceType)) {
+            return true;
+        }
+        if (!isValidType(resourceType)) {
+            return false;
+        }
+        Node node = resource.adaptTo(Node.class);
+        try {
+            if (node != null) {
+                return node.isNodeType(resourceType);
+            }
+        } catch (RepositoryException e) {
+            LOG.error("Can't check node type", e);
+        }
+        return false;
+    }
 
-	private boolean isValidType(String type) {
-		return typeResolver.isJcrType(type);
-	}
+    private boolean isValidType(String type) {
+        return typeResolver.isJcrType(type);
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/resource/ResourcePropertyPredicate.java b/src/main/java/org/apache/sling/query/impl/resource/ResourcePropertyPredicate.java
index 493e465..279f23b 100644
--- a/src/main/java/org/apache/sling/query/impl/resource/ResourcePropertyPredicate.java
+++ b/src/main/java/org/apache/sling/query/impl/resource/ResourcePropertyPredicate.java
@@ -26,41 +26,41 @@
 import java.util.function.Predicate;
 
 public class ResourcePropertyPredicate implements Predicate<Resource> {
-	private final String key;
+    private final String key;
 
-	private final String value;
+    private final String value;
 
-	private final SelectorOperator operator;
+    private final SelectorOperator operator;
 
-	public ResourcePropertyPredicate(Attribute attribute) {
-		this.key = attribute.getKey();
-		this.value = attribute.getValue();
-		this.operator = SelectorOperator.getSelectorOperator(attribute.getOperator());
-	}
+    public ResourcePropertyPredicate(Attribute attribute) {
+        this.key = attribute.getKey();
+        this.value = attribute.getValue();
+        this.operator = SelectorOperator.getSelectorOperator(attribute.getOperator());
+    }
 
-	@Override
-	public boolean test(Resource resource) {
-		Resource property = resource.getChild(key);
-		if (property == null) {
-			return false;
-		} else if (value == null) {
-			return true;
-		} else {
-			return isEqualToValue(property);
-		}
-	}
+    @Override
+    public boolean test(Resource resource) {
+        Resource property = resource.getChild(key);
+        if (property == null) {
+            return false;
+        } else if (value == null) {
+            return true;
+        } else {
+            return isEqualToValue(property);
+        }
+    }
 
-	private boolean isEqualToValue(Resource property) {
-		final String[] multiProperty = property.adaptTo(String[].class);
-		if (multiProperty != null) {
-			for (String p : multiProperty) {
-				if (operator.accepts(p, value)) {
-					return true;
-				}
-			}
-			return false;
-		} else {
-			return operator.accepts(property.adaptTo(String.class), value);
-		}
-	}
+    private boolean isEqualToValue(Resource property) {
+        final String[] multiProperty = property.adaptTo(String[].class);
+        if (multiProperty != null) {
+            for (String p : multiProperty) {
+                if (operator.accepts(p, value)) {
+                    return true;
+                }
+            }
+            return false;
+        } else {
+            return operator.accepts(property.adaptTo(String.class), value);
+        }
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/resource/ResourceTreeProvider.java b/src/main/java/org/apache/sling/query/impl/resource/ResourceTreeProvider.java
index 0ec8e4e..ead4a2a 100644
--- a/src/main/java/org/apache/sling/query/impl/resource/ResourceTreeProvider.java
+++ b/src/main/java/org/apache/sling/query/impl/resource/ResourceTreeProvider.java
@@ -34,54 +34,54 @@
 
 public class ResourceTreeProvider implements TreeProvider<Resource> {
 
-	private final JcrTypeResolver typeResolver;
+    private final JcrTypeResolver typeResolver;
 
-	public ResourceTreeProvider(ResourceResolver resolver) {
-		this.typeResolver = new SessionJcrTypeResolver(resolver);
-	}
+    public ResourceTreeProvider(ResourceResolver resolver) {
+        this.typeResolver = new SessionJcrTypeResolver(resolver);
+    }
 
-	@Override
-	public Iterator<Resource> listChildren(Resource parent) {
-		return parent.listChildren();
-	}
+    @Override
+    public Iterator<Resource> listChildren(Resource parent) {
+        return parent.listChildren();
+    }
 
-	@Override
-	public Resource getParent(Resource element) {
-		return element.getParent();
-	}
+    @Override
+    public Resource getParent(Resource element) {
+        return element.getParent();
+    }
 
-	@Override
-	public String getName(Resource element) {
-		return element.getName();
-	}
+    @Override
+    public String getName(Resource element) {
+        return element.getName();
+    }
 
-	@Override
-	public Predicate<Resource> getPredicate(String type, String id, List<Attribute> attributes) {
-		return new ResourcePredicate(type, id, attributes, typeResolver);
-	}
+    @Override
+    public Predicate<Resource> getPredicate(String type, String id, List<Attribute> attributes) {
+        return new ResourcePredicate(type, id, attributes, typeResolver);
+    }
 
-	@Override
-	public Iterator<Resource> query(List<SelectorSegment> segments, Resource resource) {
-		return new JcrQueryIterator(segments, resource, typeResolver);
-	}
+    @Override
+    public Iterator<Resource> query(List<SelectorSegment> segments, Resource resource) {
+        return new JcrQueryIterator(segments, resource, typeResolver);
+    }
 
-	@Override
-	public boolean sameElement(Resource o1, Resource o2) {
-		if (o1 == null && o2 == null) {
-			return true;
-		}
-		if (o1 == null || o2 == null) {
-			return false;
-		}
-		return o1.getPath().equals(o2.getPath());
-	}
+    @Override
+    public boolean sameElement(Resource o1, Resource o2) {
+        if (o1 == null && o2 == null) {
+            return true;
+        }
+        if (o1 == null || o2 == null) {
+            return false;
+        }
+        return o1.getPath().equals(o2.getPath());
+    }
 
-	@Override
-	public boolean isDescendant(Resource root, Resource testedElement) {
-		if (root == null || testedElement == null) {
-			return false;
-		}
-		return testedElement.getPath().startsWith(root.getPath());
-	}
+    @Override
+    public boolean isDescendant(Resource root, Resource testedElement) {
+        if (root == null || testedElement == null) {
+            return false;
+        }
+        return testedElement.getPath().startsWith(root.getPath());
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrOperator.java b/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrOperator.java
index b546f25..2d0b15c 100644
--- a/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrOperator.java
+++ b/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrOperator.java
@@ -20,57 +20,57 @@
 package org.apache.sling.query.impl.resource.jcr;
 
 public enum JcrOperator {
-	CONTAINS("*=") {
-		@Override
-		public String getJcrQueryFragment(String key, String value) {
-			return String.format("s.[%s] LIKE '%%%s%%'", key, value);
-		}
-	},
-	CONTAINS_WORD("~=") {
-		@Override
-		public String getJcrQueryFragment(String key, String value) {
-			return CONTAINS.getJcrQueryFragment(key, value);
-		}
-	},
-	ENDS_WITH("$=") {
-		@Override
-		public String getJcrQueryFragment(String key, String value) {
-			return String.format("s.[%s] LIKE '%%%s'", key, value);
-		}
-	},
-	EQUALS("=") {
-		@Override
-		public String getJcrQueryFragment(String key, String value) {
-			return String.format("s.[%s] = '%s'", key, value);
-		}
-	},
-	NOT_EQUAL("!=") {
-		@Override
-		public String getJcrQueryFragment(String key, String value) {
-			return String.format("s.[%s] != '%s'", key, value);
-		}
-	},
-	STARTS_WITH("^=") {
-		@Override
-		public String getJcrQueryFragment(String key, String value) {
-			return String.format("s.[%s] LIKE '%s%%'", key, value);
-		}
-	};
+    CONTAINS("*=") {
+        @Override
+        public String getJcrQueryFragment(String key, String value) {
+            return String.format("s.[%s] LIKE '%%%s%%'", key, value);
+        }
+    },
+    CONTAINS_WORD("~=") {
+        @Override
+        public String getJcrQueryFragment(String key, String value) {
+            return CONTAINS.getJcrQueryFragment(key, value);
+        }
+    },
+    ENDS_WITH("$=") {
+        @Override
+        public String getJcrQueryFragment(String key, String value) {
+            return String.format("s.[%s] LIKE '%%%s'", key, value);
+        }
+    },
+    EQUALS("=") {
+        @Override
+        public String getJcrQueryFragment(String key, String value) {
+            return String.format("s.[%s] = '%s'", key, value);
+        }
+    },
+    NOT_EQUAL("!=") {
+        @Override
+        public String getJcrQueryFragment(String key, String value) {
+            return String.format("s.[%s] != '%s'", key, value);
+        }
+    },
+    STARTS_WITH("^=") {
+        @Override
+        public String getJcrQueryFragment(String key, String value) {
+            return String.format("s.[%s] LIKE '%s%%'", key, value);
+        }
+    };
 
-	private final String operator;
+    private final String operator;
 
-	JcrOperator(String operator) {
-		this.operator = operator;
-	}
+    JcrOperator(String operator) {
+        this.operator = operator;
+    }
 
-	public abstract String getJcrQueryFragment(String key, String value);
+    public abstract String getJcrQueryFragment(String key, String value);
 
-	public static JcrOperator getSelectorOperator(String operator) {
-		for (JcrOperator o : values()) {
-			if (o.operator.equals(operator)) {
-				return o;
-			}
-		}
-		return EQUALS;
-	}
+    public static JcrOperator getSelectorOperator(String operator) {
+        for (JcrOperator o : values()) {
+            if (o.operator.equals(operator)) {
+                return o;
+            }
+        }
+        return EQUALS;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrQueryIterator.java b/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrQueryIterator.java
index 7201691..0b0e0fa 100644
--- a/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrQueryIterator.java
+++ b/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrQueryIterator.java
@@ -30,27 +30,27 @@
 
 public class JcrQueryIterator extends AbstractIterator<Resource> {
 
-	private final ResourceResolver resolver;
+    private final ResourceResolver resolver;
 
-	private final String query;
+    private final String query;
 
-	private Iterator<Resource> currentIterator;
+    private Iterator<Resource> currentIterator;
 
-	public JcrQueryIterator(List<SelectorSegment> segments, Resource root, JcrTypeResolver typeResolver) {
-		JcrQueryBuilder builder = new JcrQueryBuilder(typeResolver);
-		query = builder.buildQuery(segments, root.getPath());
-		resolver = root.getResourceResolver();
-	}
+    public JcrQueryIterator(List<SelectorSegment> segments, Resource root, JcrTypeResolver typeResolver) {
+        JcrQueryBuilder builder = new JcrQueryBuilder(typeResolver);
+        query = builder.buildQuery(segments, root.getPath());
+        resolver = root.getResourceResolver();
+    }
 
-	@Override
-	protected Resource getElement() {
-		if (currentIterator == null) {
-			currentIterator = resolver.findResources(query, "JCR-SQL2");
-		}
-		if (currentIterator.hasNext()) {
-			return currentIterator.next();
-		} else {
-			return null;
-		}
-	}
+    @Override
+    protected Resource getElement() {
+        if (currentIterator == null) {
+            currentIterator = resolver.findResources(query, "JCR-SQL2");
+        }
+        if (currentIterator.hasNext()) {
+            return currentIterator.next();
+        } else {
+            return null;
+        }
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrTypeResolver.java b/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrTypeResolver.java
index 3ecb242..4873a2c 100644
--- a/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrTypeResolver.java
+++ b/src/main/java/org/apache/sling/query/impl/resource/jcr/JcrTypeResolver.java
@@ -20,7 +20,7 @@
 package org.apache.sling.query.impl.resource.jcr;
 
 public interface JcrTypeResolver {
-	boolean isJcrType(String name);
+    boolean isJcrType(String name);
 
-	boolean isSubtype(String supertype, String subtype);
+    boolean isSubtype(String supertype, String subtype);
 }
diff --git a/src/main/java/org/apache/sling/query/impl/resource/jcr/SessionJcrTypeResolver.java b/src/main/java/org/apache/sling/query/impl/resource/jcr/SessionJcrTypeResolver.java
index 118f853..ac50968 100644
--- a/src/main/java/org/apache/sling/query/impl/resource/jcr/SessionJcrTypeResolver.java
+++ b/src/main/java/org/apache/sling/query/impl/resource/jcr/SessionJcrTypeResolver.java
@@ -30,56 +30,56 @@
 
 public class SessionJcrTypeResolver implements JcrTypeResolver {
 
-	private static final Logger LOG = LoggerFactory.getLogger(SessionJcrTypeResolver.class);
+    private static final Logger LOG = LoggerFactory.getLogger(SessionJcrTypeResolver.class);
 
-	private final NodeTypeManager nodeTypeManager;
+    private final NodeTypeManager nodeTypeManager;
 
-	public SessionJcrTypeResolver(ResourceResolver resolver) {
-		NodeTypeManager m = null;
-		try {
-			if (resolver != null) {
-				m = resolver.adaptTo(Session.class).getWorkspace().getNodeTypeManager();
-			}
-		} catch (RepositoryException e) {
-			LOG.error("Can't get node type manager", e);
-			m = null;
-		}
-		nodeTypeManager = m;
-	}
+    public SessionJcrTypeResolver(ResourceResolver resolver) {
+        NodeTypeManager m = null;
+        try {
+            if (resolver != null) {
+                m = resolver.adaptTo(Session.class).getWorkspace().getNodeTypeManager();
+            }
+        } catch (RepositoryException e) {
+            LOG.error("Can't get node type manager", e);
+            m = null;
+        }
+        nodeTypeManager = m;
+    }
 
-	@Override
-	public boolean isJcrType(String name) {
-		if (nodeTypeManager == null) {
-			return false;
-		}
-		if (name == null || name.contains("/")) {
-			return false;
-		}
-		try {
-			nodeTypeManager.getNodeType(name);
-			return true;
-		} catch (NoSuchNodeTypeException e) {
-			return false;
-		} catch (RepositoryException e) {
-			LOG.error("Can't check node type " + name, e);
-			return false;
-		}
-	}
+    @Override
+    public boolean isJcrType(String name) {
+        if (nodeTypeManager == null) {
+            return false;
+        }
+        if (name == null || name.contains("/")) {
+            return false;
+        }
+        try {
+            nodeTypeManager.getNodeType(name);
+            return true;
+        } catch (NoSuchNodeTypeException e) {
+            return false;
+        } catch (RepositoryException e) {
+            LOG.error("Can't check node type " + name, e);
+            return false;
+        }
+    }
 
-	@Override
-	public boolean isSubtype(String supertype, String subtype) {
-		if (nodeTypeManager == null) {
-			return false;
-		}
-		if (!isJcrType(subtype) || !isJcrType(supertype)) {
-			return false;
-		}
-		try {
-			return nodeTypeManager.getNodeType(subtype).isNodeType(supertype);
-		} catch (RepositoryException e) {
-			LOG.error("Can't compare two node types: " + subtype + " and " + supertype, e);
-			return false;
-		}
-	}
+    @Override
+    public boolean isSubtype(String supertype, String subtype) {
+        if (nodeTypeManager == null) {
+            return false;
+        }
+        if (!isJcrType(subtype) || !isJcrType(supertype)) {
+            return false;
+        }
+        try {
+            return nodeTypeManager.getNodeType(subtype).isNodeType(supertype);
+        } catch (RepositoryException e) {
+            LOG.error("Can't compare two node types: " + subtype + " and " + supertype, e);
+            return false;
+        }
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Atomic.java b/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Atomic.java
index e998bca..ba251c3 100644
--- a/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Atomic.java
+++ b/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Atomic.java
@@ -21,14 +21,14 @@
 
 public class Atomic implements Term {
 
-	private final String condition;
+    private final String condition;
 
-	public Atomic(String condition) {
-		this.condition = condition;
-	}
+    public Atomic(String condition) {
+        this.condition = condition;
+    }
 
-	@Override
-	public String buildString() {
-		return condition;
-	}
+    @Override
+    public String buildString() {
+        return condition;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Formula.java b/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Formula.java
index 4745049..607f001 100644
--- a/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Formula.java
+++ b/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Formula.java
@@ -23,39 +23,39 @@
 import java.util.List;
 
 public class Formula implements Term {
-	public enum Operator {
-		AND, OR
-	}
+    public enum Operator {
+        AND, OR
+    }
 
-	private final Operator operator;
+    private final Operator operator;
 
-	private final List<Term> conditions;
+    private final List<Term> conditions;
 
-	public Formula(Operator operator, List<Term> conditions) {
-		this.operator = operator;
-		this.conditions = conditions;
-	}
+    public Formula(Operator operator, List<Term> conditions) {
+        this.operator = operator;
+        this.conditions = conditions;
+    }
 
-	public String buildString() {
-		if (conditions.isEmpty()) {
-			return "";
-		}
+    public String buildString() {
+        if (conditions.isEmpty()) {
+            return "";
+        }
 
-		StringBuilder builder = new StringBuilder();
-		Iterator<Term> iterator = conditions.iterator();
-		if (conditions.size() > 1) {
-			builder.append("(");
-		}
-		while (iterator.hasNext()) {
-			Term term = iterator.next();
-			builder.append(term.buildString());
-			if (iterator.hasNext()) {
-				builder.append(' ').append(operator.toString()).append(' ');
-			}
-		}
-		if (conditions.size() > 1) {
-			builder.append(")");
-		}
-		return builder.toString();
-	}
+        StringBuilder builder = new StringBuilder();
+        Iterator<Term> iterator = conditions.iterator();
+        if (conditions.size() > 1) {
+            builder.append("(");
+        }
+        while (iterator.hasNext()) {
+            Term term = iterator.next();
+            builder.append(term.buildString());
+            if (iterator.hasNext()) {
+                builder.append(' ').append(operator.toString()).append(' ');
+            }
+        }
+        if (conditions.size() > 1) {
+            builder.append(")");
+        }
+        return builder.toString();
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/resource/jcr/query/JcrQueryBuilder.java b/src/main/java/org/apache/sling/query/impl/resource/jcr/query/JcrQueryBuilder.java
index e0b296c..6bcef63 100644
--- a/src/main/java/org/apache/sling/query/impl/resource/jcr/query/JcrQueryBuilder.java
+++ b/src/main/java/org/apache/sling/query/impl/resource/jcr/query/JcrQueryBuilder.java
@@ -31,111 +31,111 @@
 
 public class JcrQueryBuilder {
 
-	private final JcrTypeResolver typeResolver;
+    private final JcrTypeResolver typeResolver;
 
-	public JcrQueryBuilder(JcrTypeResolver typeResolver) {
-		this.typeResolver = typeResolver;
-	}
+    public JcrQueryBuilder(JcrTypeResolver typeResolver) {
+        this.typeResolver = typeResolver;
+    }
 
-	public String buildQuery(List<SelectorSegment> segments, String rootPath) {
-		StringBuilder query = new StringBuilder();
-		query.append("SELECT * FROM [");
-		query.append(findPrimaryType(segments));
-		query.append("]");
-		query.append(" AS s");
+    public String buildQuery(List<SelectorSegment> segments, String rootPath) {
+        StringBuilder query = new StringBuilder();
+        query.append("SELECT * FROM [");
+        query.append(findPrimaryType(segments));
+        query.append("]");
+        query.append(" AS s");
 
-		String conditionString = getConditionString(segments, rootPath);
-		if (StringUtils.isNotBlank(conditionString)) {
-			query.append(" WHERE ").append(conditionString);
-		}
-		return query.toString();
-	}
+        String conditionString = getConditionString(segments, rootPath);
+        if (StringUtils.isNotBlank(conditionString)) {
+            query.append(" WHERE ").append(conditionString);
+        }
+        return query.toString();
+    }
 
-	private String getConditionString(List<SelectorSegment> segments, String rootPath) {
-		Formula formula = prepareAlternativeConditions(segments);
-		if (StringUtils.isNotBlank(rootPath) && !"/".equals(rootPath)) {
-			List<Term> conditions = new ArrayList<Term>();
-			conditions.add(new Atomic(String.format("ISDESCENDANTNODE('%s')", rootPath)));
-			if (formula != null) {
-				conditions.add(formula);
-			}
-			formula = new Formula(Operator.AND, conditions);
-		}
-		if (formula == null) {
-			return null;
-		} else {
-			return formula.buildString();
-		}
-	}
+    private String getConditionString(List<SelectorSegment> segments, String rootPath) {
+        Formula formula = prepareAlternativeConditions(segments);
+        if (StringUtils.isNotBlank(rootPath) && !"/".equals(rootPath)) {
+            List<Term> conditions = new ArrayList<Term>();
+            conditions.add(new Atomic(String.format("ISDESCENDANTNODE('%s')", rootPath)));
+            if (formula != null) {
+                conditions.add(formula);
+            }
+            formula = new Formula(Operator.AND, conditions);
+        }
+        if (formula == null) {
+            return null;
+        } else {
+            return formula.buildString();
+        }
+    }
 
-	private String findPrimaryType(List<SelectorSegment> segments) {
-		String result = null;
-		for (SelectorSegment s : segments) {
-			String type = s.getType();
-			if (!typeResolver.isJcrType(type)) {
-				continue;
-			}
-			if (result == null) {
-				result = type;
-			} else if (typeResolver.isSubtype(type, result)) {
-				result = type;
-			} else if (!typeResolver.isSubtype(result, type)) {
-				result = "nt:base";
-			}
-		}
-		if (result == null) {
-			result = "nt:base";
-		}
-		return result;
-	}
+    private String findPrimaryType(List<SelectorSegment> segments) {
+        String result = null;
+        for (SelectorSegment s : segments) {
+            String type = s.getType();
+            if (!typeResolver.isJcrType(type)) {
+                continue;
+            }
+            if (result == null) {
+                result = type;
+            } else if (typeResolver.isSubtype(type, result)) {
+                result = type;
+            } else if (!typeResolver.isSubtype(result, type)) {
+                result = "nt:base";
+            }
+        }
+        if (result == null) {
+            result = "nt:base";
+        }
+        return result;
+    }
 
-	private static Formula prepareAlternativeConditions(List<SelectorSegment> segments) {
-		List<Term> list = new ArrayList<>();
-		for (SelectorSegment segment : segments) {
-			Formula conditions = prepareSegmentConditions(segment.getType(), segment.getName(),
-					segment.getAttributes());
-			if (conditions != null) {
-				list.add(conditions);
-			}
-		}
-		if (list.isEmpty()) {
-			return null;
-		} else {
-			return new Formula(Operator.OR, list);
-		}
-	}
+    private static Formula prepareAlternativeConditions(List<SelectorSegment> segments) {
+        List<Term> list = new ArrayList<>();
+        for (SelectorSegment segment : segments) {
+            Formula conditions = prepareSegmentConditions(segment.getType(), segment.getName(),
+                    segment.getAttributes());
+            if (conditions != null) {
+                list.add(conditions);
+            }
+        }
+        if (list.isEmpty()) {
+            return null;
+        } else {
+            return new Formula(Operator.OR, list);
+        }
+    }
 
-	private static Formula prepareSegmentConditions(String resourceType, String resourceName,
-			List<Attribute> attributes) {
-		List<Term> conditions = new ArrayList<>();
-		if (StringUtils.isNotBlank(resourceType) && !StringUtils.contains(resourceType, ':')) {
-			conditions.add(new Atomic(String.format("s.[sling:resourceType] = '%s'", resourceType)));
-		}
-		if (StringUtils.isNotBlank(resourceName)) {
-			conditions.add(new Atomic(String.format("NAME(s) = '%s'", resourceName)));
-		}
-		if (attributes != null) {
-			for (Attribute a : attributes) {
-				String attributeCondition = getAttributeCondition(a);
-				if (StringUtils.isNotBlank(attributeCondition)) {
-					conditions.add(new Atomic(attributeCondition));
-				}
-			}
-		}
-		if (conditions.isEmpty()) {
-			return null;
-		} else {
-			return new Formula(Operator.AND, conditions);
-		}
-	}
+    private static Formula prepareSegmentConditions(String resourceType, String resourceName,
+            List<Attribute> attributes) {
+        List<Term> conditions = new ArrayList<>();
+        if (StringUtils.isNotBlank(resourceType) && !StringUtils.contains(resourceType, ':')) {
+            conditions.add(new Atomic(String.format("s.[sling:resourceType] = '%s'", resourceType)));
+        }
+        if (StringUtils.isNotBlank(resourceName)) {
+            conditions.add(new Atomic(String.format("NAME(s) = '%s'", resourceName)));
+        }
+        if (attributes != null) {
+            for (Attribute a : attributes) {
+                String attributeCondition = getAttributeCondition(a);
+                if (StringUtils.isNotBlank(attributeCondition)) {
+                    conditions.add(new Atomic(attributeCondition));
+                }
+            }
+        }
+        if (conditions.isEmpty()) {
+            return null;
+        } else {
+            return new Formula(Operator.AND, conditions);
+        }
+    }
 
-	private static String getAttributeCondition(Attribute attribute) {
-		if (attribute.getKey().contains("/")) {
-			return null;
-		}
+    private static String getAttributeCondition(Attribute attribute) {
+        if (attribute.getKey().contains("/")) {
+            return null;
+        }
 
-		JcrOperator operator = JcrOperator.getSelectorOperator(attribute.getOperator());
-		String value = StringUtils.replace(attribute.getValue(), "'", "''");
-		return operator.getJcrQueryFragment(attribute.getKey(), value);
-	}
+        JcrOperator operator = JcrOperator.getSelectorOperator(attribute.getOperator());
+        String value = StringUtils.replace(attribute.getValue(), "'", "''");
+        return operator.getJcrQueryFragment(attribute.getKey(), value);
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Term.java b/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Term.java
index 4515639..04509e4 100644
--- a/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Term.java
+++ b/src/main/java/org/apache/sling/query/impl/resource/jcr/query/Term.java
@@ -20,5 +20,5 @@
 package org.apache.sling.query.impl.resource.jcr.query;
 
 public interface Term {
-	String buildString();
+    String buildString();
 }
diff --git a/src/main/java/org/apache/sling/query/impl/selector/FunctionType.java b/src/main/java/org/apache/sling/query/impl/selector/FunctionType.java
index 626e065..467ef32 100644
--- a/src/main/java/org/apache/sling/query/impl/selector/FunctionType.java
+++ b/src/main/java/org/apache/sling/query/impl/selector/FunctionType.java
@@ -33,85 +33,75 @@
 import java.util.function.Function;
 
 public enum FunctionType {
-	EQ {
-		@Override
-		public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
-				TreeProvider<T> provider) {
-			int index = Integer.parseInt(argument);
-			return new SliceFunction<T>(index, index);
-		}
-	},
-	FIRST {
-		@Override
-		public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
-				TreeProvider<T> provider) {
-			return new SliceFunction<T>(0, 0);
-		}
-	},
-	LAST {
-		@Override
-		public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
-				TreeProvider<T> provider) {
-			return new LastFunction<T>();
-		}
-	},
-	GT {
-		@Override
-		public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
-				TreeProvider<T> provider) {
-			return new SliceFunction<T>(Integer.valueOf(argument) + 1);
-		}
-	},
-	LT {
-		@Override
-		public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
-				TreeProvider<T> provider) {
-			return new SliceFunction<T>(0, Integer.valueOf(argument) - 1);
-		}
-	},
-	HAS {
-		@Override
-		public <T> Function<?, ?> getFunction(String selector, SearchStrategy strategy,
-											  TreeProvider<T> provider) {
-			return new HasFunction<T>(selector, strategy, provider);
-		}
-	},
-	PARENT {
-		@Override
-		public <T> Function<?, ?> getFunction(String selector, SearchStrategy strategy,
-				final TreeProvider<T> provider) {
-			return new FilterFunction<T>(new ParentPredicate<T>(provider));
-		}
-	},
-	EMPTY {
-		@Override
-		public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
-				final TreeProvider<T> provider) {
-			return new FilterFunction<T>(new RejectingPredicate<T>(new ParentPredicate<T>(provider)));
-		}
-	},
-	ODD {
-		@Override
-		public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
-				TreeProvider<T> provider) {
-			return new EvenFunction<T>(false);
-		}
-	},
-	EVEN {
-		@Override
-		public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
-				TreeProvider<T> provider) {
-			return new EvenFunction<T>(true);
-		}
-	},
-	NOT {
-		@Override
-		public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
-				TreeProvider<T> provider) {
-			return new NotFunction<T>(new SelectorFunction<T>(argument, provider, strategy));
-		}
-	};
+    EQ {
+        @Override
+        public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy, TreeProvider<T> provider) {
+            int index = Integer.parseInt(argument);
+            return new SliceFunction<T>(index, index);
+        }
+    },
+    FIRST {
+        @Override
+        public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy, TreeProvider<T> provider) {
+            return new SliceFunction<T>(0, 0);
+        }
+    },
+    LAST {
+        @Override
+        public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy, TreeProvider<T> provider) {
+            return new LastFunction<T>();
+        }
+    },
+    GT {
+        @Override
+        public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy, TreeProvider<T> provider) {
+            return new SliceFunction<T>(Integer.valueOf(argument) + 1);
+        }
+    },
+    LT {
+        @Override
+        public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy, TreeProvider<T> provider) {
+            return new SliceFunction<T>(0, Integer.valueOf(argument) - 1);
+        }
+    },
+    HAS {
+        @Override
+        public <T> Function<?, ?> getFunction(String selector, SearchStrategy strategy, TreeProvider<T> provider) {
+            return new HasFunction<T>(selector, strategy, provider);
+        }
+    },
+    PARENT {
+        @Override
+        public <T> Function<?, ?> getFunction(String selector, SearchStrategy strategy,
+                final TreeProvider<T> provider) {
+            return new FilterFunction<T>(new ParentPredicate<T>(provider));
+        }
+    },
+    EMPTY {
+        @Override
+        public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
+                final TreeProvider<T> provider) {
+            return new FilterFunction<T>(new RejectingPredicate<T>(new ParentPredicate<T>(provider)));
+        }
+    },
+    ODD {
+        @Override
+        public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy, TreeProvider<T> provider) {
+            return new EvenFunction<T>(false);
+        }
+    },
+    EVEN {
+        @Override
+        public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy, TreeProvider<T> provider) {
+            return new EvenFunction<T>(true);
+        }
+    },
+    NOT {
+        @Override
+        public <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy, TreeProvider<T> provider) {
+            return new NotFunction<T>(new SelectorFunction<T>(argument, provider, strategy));
+        }
+    };
 
-	public abstract <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy,
-			TreeProvider<T> provider);
+    public abstract <T> Function<?, ?> getFunction(String argument, SearchStrategy strategy, TreeProvider<T> provider);
 }
diff --git a/src/main/java/org/apache/sling/query/impl/selector/HierarchyOperator.java b/src/main/java/org/apache/sling/query/impl/selector/HierarchyOperator.java
index 4ad399e..b422a1d 100644
--- a/src/main/java/org/apache/sling/query/impl/selector/HierarchyOperator.java
+++ b/src/main/java/org/apache/sling/query/impl/selector/HierarchyOperator.java
@@ -31,54 +31,59 @@
 import java.util.function.Function;
 
 public enum HierarchyOperator {
-//@formatter:off
-	CHILD('>') {
-		@Override
-		public <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy, TreeProvider<T> provider) {
-			return new ChildrenFunction<T>(provider);
-		}
-	},
-	DESCENDANT(' ') {
-		@Override
-		public <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy, TreeProvider<T> provider) {
-			return new FindFunction<T>(strategy, provider, segment);
-		}
-	},
-	NEXT_ADJACENT('+') {
-		@Override
-		public <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy, TreeProvider<T> provider) {
-			return new NextFunction<T>(null, provider);
-		}
-	},
-	NEXT_SIBLINGS('~') {
-		@Override
-		public <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy, TreeProvider<T> provider) {
-			return new NextFunction<T>(new RejectingPredicate<T>(), provider);
-		}
-	},
-	NOOP((char)0) {
-		@Override
-		public <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy, TreeProvider<T> provider) {
-			return new IdentityFunction<T>();
-		}
-	};
-//@formatter:on
+    // @formatter:off
+    CHILD('>') {
+        @Override
+        public <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy,
+                TreeProvider<T> provider) {
+            return new ChildrenFunction<T>(provider);
+        }
+    },
+    DESCENDANT(' ') {
+        @Override
+        public <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy,
+                TreeProvider<T> provider) {
+            return new FindFunction<T>(strategy, provider, segment);
+        }
+    },
+    NEXT_ADJACENT('+') {
+        @Override
+        public <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy,
+                TreeProvider<T> provider) {
+            return new NextFunction<T>(null, provider);
+        }
+    },
+    NEXT_SIBLINGS('~') {
+        @Override
+        public <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy,
+                TreeProvider<T> provider) {
+            return new NextFunction<T>(new RejectingPredicate<T>(), provider);
+        }
+    },
+    NOOP((char) 0) {
+        @Override
+        public <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy,
+                TreeProvider<T> provider) {
+            return new IdentityFunction<T>();
+        }
+    };
+    // @formatter:on
 
-	private final char c;
+    private final char c;
 
-	private HierarchyOperator(char c) {
-		this.c = c;
-	}
+    private HierarchyOperator(char c) {
+        this.c = c;
+    }
 
-	public abstract <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy,
-												   TreeProvider<T> provider);
+    public abstract <T> Function<?, ?> getFunction(SelectorSegment segment, SearchStrategy strategy,
+            TreeProvider<T> provider);
 
-	public static HierarchyOperator findByCharacter(char c) {
-		for (HierarchyOperator operator : values()) {
-			if (operator.c == c) {
-				return operator;
-			}
-		}
-		return NOOP;
-	}
+    public static HierarchyOperator findByCharacter(char c) {
+        for (HierarchyOperator operator : values()) {
+            if (operator.c == c) {
+                return operator;
+            }
+        }
+        return NOOP;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/selector/SelectorFunction.java b/src/main/java/org/apache/sling/query/impl/selector/SelectorFunction.java
index 4f10e8a..395139a 100644
--- a/src/main/java/org/apache/sling/query/impl/selector/SelectorFunction.java
+++ b/src/main/java/org/apache/sling/query/impl/selector/SelectorFunction.java
@@ -43,59 +43,58 @@
 
 public class SelectorFunction<T> implements IteratorToIteratorFunction<T>, Predicate<T> {
 
-	private final List<IteratorToIteratorFunction<T>> selectorFunctions;
+    private final List<IteratorToIteratorFunction<T>> selectorFunctions;
 
-	private final TreeProvider<T> provider;
+    private final TreeProvider<T> provider;
 
-	private final SearchStrategy strategy;
+    private final SearchStrategy strategy;
 
-	public SelectorFunction(String selector, TreeProvider<T> provider, SearchStrategy strategy) {
-		this.provider = provider;
-		this.strategy = strategy;
-		List<Selector> selectors = SelectorParser.parse(selector);
-		selectorFunctions = new ArrayList<>();
-		for (Selector s : selectors) {
-			selectorFunctions.add(createSelectorFunction(s.getSegments()));
-		}
-	}
+    public SelectorFunction(String selector, TreeProvider<T> provider, SearchStrategy strategy) {
+        this.provider = provider;
+        this.strategy = strategy;
+        List<Selector> selectors = SelectorParser.parse(selector);
+        selectorFunctions = new ArrayList<>();
+        for (Selector s : selectors) {
+            selectorFunctions.add(createSelectorFunction(s.getSegments()));
+        }
+    }
 
-	@Override
-	public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
-		LazyList<Option<T>> list = new LazyList<Option<T>>(input);
-		List<Iterator<Option<T>>> iterators = new ArrayList<>();
-		for (IteratorToIteratorFunction<T> function : selectorFunctions) {
-			iterators.add(new SuppIterator<T>(list, function));
-		}
-		return new AlternativeIterator<T>(iterators);
-	}
+    @Override
+    public Iterator<Option<T>> apply(Iterator<Option<T>> input) {
+        LazyList<Option<T>> list = new LazyList<Option<T>>(input);
+        List<Iterator<Option<T>>> iterators = new ArrayList<>();
+        for (IteratorToIteratorFunction<T> function : selectorFunctions) {
+            iterators.add(new SuppIterator<T>(list, function));
+        }
+        return new AlternativeIterator<T>(iterators);
+    }
 
-	@Override
-	public boolean test(T resource) {
-		Iterator<Option<T>> result = apply(IteratorUtils.singleElementIterator(Option.of(resource, 0)));
-		return new EmptyElementFilter<T>(result).hasNext();
-	}
+    @Override
+    public boolean test(T resource) {
+        Iterator<Option<T>> result = apply(IteratorUtils.singleElementIterator(Option.of(resource, 0)));
+        return new EmptyElementFilter<T>(result).hasNext();
+    }
 
-	private IteratorToIteratorFunction<T> createSelectorFunction(List<SelectorSegment> segments) {
-		List<Function<?, ?>> segmentFunctions = new ArrayList<>();
-		for (SelectorSegment segment : segments) {
-			segmentFunctions.addAll(createSegmentFunction(segment));
-		}
-		return new CompositeFunction<T>(segmentFunctions);
-	}
+    private IteratorToIteratorFunction<T> createSelectorFunction(List<SelectorSegment> segments) {
+        List<Function<?, ?>> segmentFunctions = new ArrayList<>();
+        for (SelectorSegment segment : segments) {
+            segmentFunctions.addAll(createSegmentFunction(segment));
+        }
+        return new CompositeFunction<T>(segmentFunctions);
+    }
 
-	private List<Function<?, ?>> createSegmentFunction(SelectorSegment segment) {
-		List<Function<?, ?>> functions = new ArrayList<>();
-		HierarchyOperator operator = HierarchyOperator.findByCharacter(segment.getHierarchyOperator());
-		functions.add(operator.getFunction(segment, strategy, provider));
-		Predicate<T> predicate = provider.getPredicate(segment.getType(), segment.getName(),
-				segment.getAttributes());
-		functions.add(new FilterFunction<T>(predicate));
-		for (Modifier modifiers : segment.getModifiers()) {
-			FunctionType type = FunctionType.valueOf(modifiers.getName().toUpperCase());
-			Function<?, ?> f = type.getFunction(modifiers.getArgument(), strategy, provider);
-			functions.add(f);
-		}
-		return functions;
-	}
+    private List<Function<?, ?>> createSegmentFunction(SelectorSegment segment) {
+        List<Function<?, ?>> functions = new ArrayList<>();
+        HierarchyOperator operator = HierarchyOperator.findByCharacter(segment.getHierarchyOperator());
+        functions.add(operator.getFunction(segment, strategy, provider));
+        Predicate<T> predicate = provider.getPredicate(segment.getType(), segment.getName(), segment.getAttributes());
+        functions.add(new FilterFunction<T>(predicate));
+        for (Modifier modifiers : segment.getModifiers()) {
+            FunctionType type = FunctionType.valueOf(modifiers.getName().toUpperCase());
+            Function<?, ?> f = type.getFunction(modifiers.getArgument(), strategy, provider);
+            functions.add(f);
+        }
+        return functions;
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/selector/parser/Attribute.java b/src/main/java/org/apache/sling/query/impl/selector/parser/Attribute.java
index ba4db14..f6fc2e9 100644
--- a/src/main/java/org/apache/sling/query/impl/selector/parser/Attribute.java
+++ b/src/main/java/org/apache/sling/query/impl/selector/parser/Attribute.java
@@ -23,49 +23,49 @@
 import org.apache.commons.lang.builder.HashCodeBuilder;
 
 public class Attribute {
-	private final String key;
+    private final String key;
 
-	private final String operator;
+    private final String operator;
 
-	private final String value;
+    private final String value;
 
-	public Attribute(String key, String operator, String value) {
-		this.key = key;
-		this.operator = operator;
-		this.value = value;
-	}
+    public Attribute(String key, String operator, String value) {
+        this.key = key;
+        this.operator = operator;
+        this.value = value;
+    }
 
-	public String getKey() {
-		return key;
-	}
+    public String getKey() {
+        return key;
+    }
 
-	public String getOperator() {
-		return operator;
-	}
+    public String getOperator() {
+        return operator;
+    }
 
-	public String getValue() {
-		return value;
-	}
+    public String getValue() {
+        return value;
+    }
 
-	public String toString() {
-		return String.format("Attribute[%s %s %s]", key, operator, value);
-	}
+    public String toString() {
+        return String.format("Attribute[%s %s %s]", key, operator, value);
+    }
 
-	public boolean equals(Object obj) {
-		if (obj == null) {
-			return false;
-		}
-		if (obj == this) {
-			return true;
-		}
-		if (obj.getClass() != getClass()) {
-			return false;
-		}
-		Attribute rhs = (Attribute) obj;
-		return new EqualsBuilder().append(key, rhs.key).append(value, rhs.value).isEquals();
-	}
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (obj == this) {
+            return true;
+        }
+        if (obj.getClass() != getClass()) {
+            return false;
+        }
+        Attribute rhs = (Attribute) obj;
+        return new EqualsBuilder().append(key, rhs.key).append(value, rhs.value).isEquals();
+    }
 
-	public int hashCode() {
-		return new HashCodeBuilder().append(key).append(value).toHashCode();
-	}
+    public int hashCode() {
+        return new HashCodeBuilder().append(key).append(value).toHashCode();
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/selector/parser/Modifier.java b/src/main/java/org/apache/sling/query/impl/selector/parser/Modifier.java
index 1c60da1..00a8a21 100644
--- a/src/main/java/org/apache/sling/query/impl/selector/parser/Modifier.java
+++ b/src/main/java/org/apache/sling/query/impl/selector/parser/Modifier.java
@@ -24,46 +24,45 @@
 
 public class Modifier {
 
-	private final String name;
+    private final String name;
 
-	private final String argument;
+    private final String argument;
 
-	public Modifier(String name, String argument) {
-		this.name = name;
-		this.argument = argument;
-	}
+    public Modifier(String name, String argument) {
+        this.name = name;
+        this.argument = argument;
+    }
 
-	public String getName() {
-		return name;
-	}
+    public String getName() {
+        return name;
+    }
 
-	public String getArgument() {
-		return argument;
-	}
+    public String getArgument() {
+        return argument;
+    }
 
-	@Override
-	public String toString() {
-		return String.format("Modifier[%s,%s]", name, argument);
-	}
+    @Override
+    public String toString() {
+        return String.format("Modifier[%s,%s]", name, argument);
+    }
 
-	@Override
-	public boolean equals(Object obj) {
-		if (obj == null) {
-			return false;
-		}
-		if (obj == this) {
-			return true;
-		}
-		if (obj.getClass() != getClass()) {
-			return false;
-		}
-		Modifier rhs = (Modifier) obj;
-		return new EqualsBuilder().append(name, rhs.name).append(argument, rhs.argument)
-				.isEquals();
-	}
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (obj == this) {
+            return true;
+        }
+        if (obj.getClass() != getClass()) {
+            return false;
+        }
+        Modifier rhs = (Modifier) obj;
+        return new EqualsBuilder().append(name, rhs.name).append(argument, rhs.argument).isEquals();
+    }
 
-	@Override
-	public int hashCode() {
-		return new HashCodeBuilder().append(name).append(argument).toHashCode();
-	}
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(name).append(argument).toHashCode();
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/query/impl/selector/parser/ParserContext.java b/src/main/java/org/apache/sling/query/impl/selector/parser/ParserContext.java
index df2de0f..271b079 100644
--- a/src/main/java/org/apache/sling/query/impl/selector/parser/ParserContext.java
+++ b/src/main/java/org/apache/sling/query/impl/selector/parser/ParserContext.java
@@ -23,142 +23,142 @@
 import java.util.List;
 
 public class ParserContext {
-	private final List<Selector> selectors = new ArrayList<Selector>();
+    private final List<Selector> selectors = new ArrayList<Selector>();
 
-	private final List<SelectorSegment> segments = new ArrayList<SelectorSegment>();
+    private final List<SelectorSegment> segments = new ArrayList<SelectorSegment>();
 
-	private final List<Attribute> attributes = new ArrayList<Attribute>();
+    private final List<Attribute> attributes = new ArrayList<Attribute>();
 
-	private final List<Modifier> modifiers = new ArrayList<Modifier>();
+    private final List<Modifier> modifiers = new ArrayList<Modifier>();
 
-	private char hierarchyOperator;
+    private char hierarchyOperator;
 
-	private State state = State.START;
+    private State state = State.START;
 
-	private StringBuilder builder = new StringBuilder();
+    private StringBuilder builder = new StringBuilder();
 
-	private String type;
+    private String type;
 
-	private String name;
+    private String name;
 
-	private String attributeKey;
+    private String attributeKey;
 
-	private String attributeOperator;
+    private String attributeOperator;
 
-	private String attributeValue;
+    private String attributeValue;
 
-	private String currentModifierName;
+    private String currentModifierName;
 
-	private int parenthesesCount = 0;
+    private int parenthesesCount = 0;
 
-	List<Attribute> getAttributes() {
-		return attributes;
-	}
+    List<Attribute> getAttributes() {
+        return attributes;
+    }
 
-	List<Modifier> getModifiers() {
-		return modifiers;
-	}
+    List<Modifier> getModifiers() {
+        return modifiers;
+    }
 
-	String getType() {
-		return type;
-	}
+    String getType() {
+        return type;
+    }
 
-	String getName() {
-		return name;
-	}
+    String getName() {
+        return name;
+    }
 
-	char getHierarchyOperator() {
-		return hierarchyOperator;
-	}
+    char getHierarchyOperator() {
+        return hierarchyOperator;
+    }
 
-	public State getState() {
-		return state;
-	}
+    public State getState() {
+        return state;
+    }
 
-	void increaseParentheses() {
-		parenthesesCount++;
-	}
+    void increaseParentheses() {
+        parenthesesCount++;
+    }
 
-	int decreaseParentheses() {
-		return --parenthesesCount;
-	}
+    int decreaseParentheses() {
+        return --parenthesesCount;
+    }
 
-	void setType() {
-		type = builder.toString();
-		builder = new StringBuilder();
-	}
+    void setType() {
+        type = builder.toString();
+        builder = new StringBuilder();
+    }
 
-	void setName() {
-		name = builder.toString();
-		builder = new StringBuilder();
-	}
+    void setName() {
+        name = builder.toString();
+        builder = new StringBuilder();
+    }
 
-	void setAttributeKey() {
-		attributeKey = builder.toString();
-		builder = new StringBuilder();
-	}
+    void setAttributeKey() {
+        attributeKey = builder.toString();
+        builder = new StringBuilder();
+    }
 
-	void setAttributeOperator() {
-		attributeOperator = builder.toString();
-		builder = new StringBuilder();
-	}
+    void setAttributeOperator() {
+        attributeOperator = builder.toString();
+        builder = new StringBuilder();
+    }
 
-	void setAttributeValue() {
-		attributeValue = builder.toString();
-		builder = new StringBuilder();
-	}
+    void setAttributeValue() {
+        attributeValue = builder.toString();
+        builder = new StringBuilder();
+    }
 
-	void addAttribute() {
-		attributes.add(new Attribute(attributeKey, attributeOperator, attributeValue));
-		attributeKey = null;
-		attributeOperator = null;
-		attributeValue = null;
-	}
+    void addAttribute() {
+        attributes.add(new Attribute(attributeKey, attributeOperator, attributeValue));
+        attributeKey = null;
+        attributeOperator = null;
+        attributeValue = null;
+    }
 
-	void setModifierName() {
-		currentModifierName = builder.toString();
-		builder = new StringBuilder();
-	}
+    void setModifierName() {
+        currentModifierName = builder.toString();
+        builder = new StringBuilder();
+    }
 
-	void addModifier() {
-		Modifier modifier;
-		if (currentModifierName == null) {
-			modifier = new Modifier(builder.toString(), null);
-		} else {
-			modifier = new Modifier(currentModifierName, builder.toString());
-			currentModifierName = null;
-		}
-		modifiers.add(modifier);
-		builder = new StringBuilder();
-	}
+    void addModifier() {
+        Modifier modifier;
+        if (currentModifierName == null) {
+            modifier = new Modifier(builder.toString(), null);
+        } else {
+            modifier = new Modifier(currentModifierName, builder.toString());
+            currentModifierName = null;
+        }
+        modifiers.add(modifier);
+        builder = new StringBuilder();
+    }
 
-	void setState(State state) {
-		this.state = state;
-	}
+    void setState(State state) {
+        this.state = state;
+    }
 
-	void setHierarchyOperator(char hierarchyOperator) {
-		this.hierarchyOperator = hierarchyOperator;
-	}
+    void setHierarchyOperator(char hierarchyOperator) {
+        this.hierarchyOperator = hierarchyOperator;
+    }
 
-	void finishSelectorSegment() {
-		segments.add(new SelectorSegment(this, segments.isEmpty()));
-		attributes.clear();
-		modifiers.clear();
-		hierarchyOperator = ' ';
-		type = null;
-		name = null;
-	}
+    void finishSelectorSegment() {
+        segments.add(new SelectorSegment(this, segments.isEmpty()));
+        attributes.clear();
+        modifiers.clear();
+        hierarchyOperator = ' ';
+        type = null;
+        name = null;
+    }
 
-	void finishSelector() {
-		selectors.add(new Selector(segments));
-		segments.clear();
-	}
+    void finishSelector() {
+        selectors.add(new Selector(segments));
+        segments.clear();
+    }
 
-	void append(char c) {
-		builder.append(c);
-	}
+    void append(char c) {
+        builder.append(c);
+    }
 
-	public List<Selector> getSelectors() {
-		return selectors;
-	}
+    public List<Selector> getSelectors() {
+        return selectors;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/selector/parser/Selector.java b/src/main/java/org/apache/sling/query/impl/selector/parser/Selector.java
index bd21eed..435c28f 100644
--- a/src/main/java/org/apache/sling/query/impl/selector/parser/Selector.java
+++ b/src/main/java/org/apache/sling/query/impl/selector/parser/Selector.java
@@ -24,17 +24,17 @@
 import java.util.List;
 
 public class Selector {
-	private final List<SelectorSegment> segments;
+    private final List<SelectorSegment> segments;
 
-	public Selector() {
-		this.segments = Collections.emptyList();
-	}
+    public Selector() {
+        this.segments = Collections.emptyList();
+    }
 
-	public Selector(List<SelectorSegment> segments) {
-		this.segments = new ArrayList<>(segments);
-	}
+    public Selector(List<SelectorSegment> segments) {
+        this.segments = new ArrayList<>(segments);
+    }
 
-	public List<SelectorSegment> getSegments() {
-		return segments;
-	}
+    public List<SelectorSegment> getSegments() {
+        return segments;
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/selector/parser/SelectorParser.java b/src/main/java/org/apache/sling/query/impl/selector/parser/SelectorParser.java
index 7e5d2ab..eff1ce1 100644
--- a/src/main/java/org/apache/sling/query/impl/selector/parser/SelectorParser.java
+++ b/src/main/java/org/apache/sling/query/impl/selector/parser/SelectorParser.java
@@ -27,29 +27,29 @@
 
 public final class SelectorParser {
 
-	private SelectorParser() {
-	}
+    private SelectorParser() {
+    }
 
-	public static List<Selector> parse(String selector) {
-		if (StringUtils.isEmpty(selector)) {
-			return Arrays.asList(new Selector());
-		}
-		ParserContext context = new ParserContext();
-		for (char c : selector.toCharArray()) {
-			context.getState().process(context, c);
-		}
-		context.getState().process(context, (char) 0);
-		return context.getSelectors();
-	}
+    public static List<Selector> parse(String selector) {
+        if (StringUtils.isEmpty(selector)) {
+            return Arrays.asList(new Selector());
+        }
+        ParserContext context = new ParserContext();
+        for (char c : selector.toCharArray()) {
+            context.getState().process(context, c);
+        }
+        context.getState().process(context, (char) 0);
+        return context.getSelectors();
+    }
 
-	public static List<SelectorSegment> getFirstSegmentFromEachSelector(List<Selector> selectors) {
-		List<SelectorSegment> segments = new ArrayList<SelectorSegment>();
-		for (Selector selector : selectors) {
-			if (!selector.getSegments().isEmpty()) {
-				segments.add(selector.getSegments().get(0));
-			}
-		}
-		return segments;
-	}
+    public static List<SelectorSegment> getFirstSegmentFromEachSelector(List<Selector> selectors) {
+        List<SelectorSegment> segments = new ArrayList<SelectorSegment>();
+        for (Selector selector : selectors) {
+            if (!selector.getSegments().isEmpty()) {
+                segments.add(selector.getSegments().get(0));
+            }
+        }
+        return segments;
+    }
 
 }
diff --git a/src/main/java/org/apache/sling/query/impl/selector/parser/SelectorSegment.java b/src/main/java/org/apache/sling/query/impl/selector/parser/SelectorSegment.java
index e5089a9..2dfa38c 100644
--- a/src/main/java/org/apache/sling/query/impl/selector/parser/SelectorSegment.java
+++ b/src/main/java/org/apache/sling/query/impl/selector/parser/SelectorSegment.java
@@ -26,82 +26,81 @@
 import org.apache.commons.lang.builder.HashCodeBuilder;
 
 public class SelectorSegment {
-	private final String type;
+    private final String type;
 
-	private final String name;
+    private final String name;
 
-	private final List<Attribute> attributes;
+    private final List<Attribute> attributes;
 
-	private final List<Modifier> modifiers;
+    private final List<Modifier> modifiers;
 
-	private final char hierarchyOperator;
+    private final char hierarchyOperator;
 
-	public SelectorSegment(ParserContext context, boolean firstSegment) {
-		this.type = context.getType();
-		this.name = context.getName();
-		this.attributes = new ArrayList<>(context.getAttributes());
-		this.modifiers = new ArrayList<>(context.getModifiers());
-		if (firstSegment) {
-			hierarchyOperator = 0;
-		} else {
-			hierarchyOperator = context.getHierarchyOperator();
-		}
-	}
+    public SelectorSegment(ParserContext context, boolean firstSegment) {
+        this.type = context.getType();
+        this.name = context.getName();
+        this.attributes = new ArrayList<>(context.getAttributes());
+        this.modifiers = new ArrayList<>(context.getModifiers());
+        if (firstSegment) {
+            hierarchyOperator = 0;
+        } else {
+            hierarchyOperator = context.getHierarchyOperator();
+        }
+    }
 
-	SelectorSegment(String type, String name, List<Attribute> attributes,
-			List<Modifier> modifiers, char hierarchyOperator) {
-		this.type = type;
-		this.name = name;
-		this.attributes = attributes;
-		this.modifiers = modifiers;
-		this.hierarchyOperator = hierarchyOperator;
-	}
+    SelectorSegment(String type, String name, List<Attribute> attributes, List<Modifier> modifiers,
+            char hierarchyOperator) {
+        this.type = type;
+        this.name = name;
+        this.attributes = attributes;
+        this.modifiers = modifiers;
+        this.hierarchyOperator = hierarchyOperator;
+    }
 
-	public String getType() {
-		return type;
-	}
+    public String getType() {
+        return type;
+    }
 
-	public String getName() {
-		return name;
-	}
+    public String getName() {
+        return name;
+    }
 
-	public List<Attribute> getAttributes() {
-		return attributes;
-	}
+    public List<Attribute> getAttributes() {
+        return attributes;
+    }
 
-	public char getHierarchyOperator() {
-		return hierarchyOperator;
-	}
+    public char getHierarchyOperator() {
+        return hierarchyOperator;
+    }
 
-	public List<Modifier> getModifiers() {
-		return modifiers;
-	}
+    public List<Modifier> getModifiers() {
+        return modifiers;
+    }
 
-	@Override
-	public boolean equals(Object obj) {
-		if (obj == null) {
-			return false;
-		}
-		if (obj == this) {
-			return true;
-		}
-		if (obj.getClass() != getClass()) {
-			return false;
-		}
-		SelectorSegment rhs = (SelectorSegment) obj;
-		return new EqualsBuilder().append(type, rhs.type).append(attributes, rhs.attributes)
-				.append(modifiers, rhs.modifiers).append(hierarchyOperator, rhs.hierarchyOperator).isEquals();
-	}
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (obj == this) {
+            return true;
+        }
+        if (obj.getClass() != getClass()) {
+            return false;
+        }
+        SelectorSegment rhs = (SelectorSegment) obj;
+        return new EqualsBuilder().append(type, rhs.type).append(attributes, rhs.attributes)
+                .append(modifiers, rhs.modifiers).append(hierarchyOperator, rhs.hierarchyOperator).isEquals();
+    }
 
-	@Override
-	public int hashCode() {
-		return new HashCodeBuilder().append(type).append(attributes).append(modifiers)
-				.append(hierarchyOperator).toHashCode();
-	}
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(type).append(attributes).append(modifiers).append(hierarchyOperator)
+                .toHashCode();
+    }
 
-	@Override
-	public String toString() {
-		return String.format("SelectorSegment[%s,%s,%s,%s]", type, attributes, modifiers,
-				hierarchyOperator);
-	}
+    @Override
+    public String toString() {
+        return String.format("SelectorSegment[%s,%s,%s,%s]", type, attributes, modifiers, hierarchyOperator);
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/selector/parser/State.java b/src/main/java/org/apache/sling/query/impl/selector/parser/State.java
index ced32c6..a6b8883 100644
--- a/src/main/java/org/apache/sling/query/impl/selector/parser/State.java
+++ b/src/main/java/org/apache/sling/query/impl/selector/parser/State.java
@@ -22,217 +22,217 @@
 import org.apache.commons.lang.ArrayUtils;
 
 public enum State {
-	START {
-		@Override
-		public void process(ParserContext context, char c) {
-			if (c == '/') {
-				context.setState(State.TYPE_WITH_SLASHES);
-				context.append(c);
-			} else if (c == '[') {
-				context.setState(State.ATTRIBUTE_KEY);
-			} else if (c == ':') {
-				context.setState(State.MODIFIER);
-			} else if (c == '>' || c == '+' || c == '~') {
-				context.setHierarchyOperator(c);
-			} else if (c == '#') {
-				context.setType();
-				context.setState(NAME);
-			} else if (c != ' ') {
-				context.setState(State.TYPE);
-				context.append(c);
-			}
-		}
-	},
-	IDLE {
-		@Override
-		public void process(ParserContext context, char c) {
-			if (c == '[') {
-				context.setState(State.ATTRIBUTE_KEY);
-			} else if (c == ':') {
-				context.setState(State.MODIFIER);
-			} else if (c == ' ') {
-				context.finishSelectorSegment();
-				context.setState(START);
-			} else if (c == ',' || c == 0) {
-				context.finishSelectorSegment();
-				context.finishSelector();
-				context.setState(START);
-			}
-		}
-	},
-	TYPE {
-		@Override
-		public void process(ParserContext context, char c) {
-			if (c == '/') {
-				context.setState(State.TYPE_WITH_SLASHES);
-				context.append(c);
-			} else if (c == '[') {
-				context.setState(State.ATTRIBUTE_KEY);
-				context.setType();
-			} else if (c == ':') {
-				context.setState(State.TYPE_WITH_SLASHES);
-				context.append(c);
-			} else if (c == '#') {
-				context.setType();
-				context.setState(NAME);
-			} else if (c == ' ') {
-				context.setType();
-				context.finishSelectorSegment();
-				context.setState(START);
-			} else if (c == ',' || c == 0) {
-				context.setType();
-				context.finishSelectorSegment();
-				context.finishSelector();
-				context.setState(START);
-			} else {
-				context.append(c);
-			}
-		}
-	},
-	TYPE_WITH_SLASHES {
-		@Override
-		public void process(ParserContext context, char c) {
-			if (c == '[') {
-				context.setState(State.ATTRIBUTE_KEY);
-				context.setType();
-			} else if (c == ':') {
-				context.setState(State.MODIFIER);
-				context.setType();
-			} else if (c == '#') {
-				context.setType();
-				context.setState(NAME);
-			} else if (c == ' ') {
-				context.setType();
-				context.finishSelectorSegment();
-				context.setState(START);
-			} else if (c == ',' || c == 0) {
-				context.setType();
-				context.finishSelectorSegment();
-				context.finishSelector();
-				context.setState(START);
-			} else {
-				context.append(c);
-			}
-		}
-	},
-	NAME {
-		@Override
-		public void process(ParserContext context, char c) {
-			if (c == '[') {
-				context.setName();
-				context.setState(State.ATTRIBUTE_KEY);
-			} else if (c == ':') {
-				context.setName();
-				context.setState(State.MODIFIER);
-			} else if (c == ' ') {
-				context.setName();
-				context.finishSelectorSegment();
-				context.setState(START);
-			} else if (c == ',' || c == 0) {
-				context.setName();
-				context.finishSelectorSegment();
-				context.finishSelector();
-				context.setState(START);
-			} else if (c == '\'') {
-				context.setState(State.ESCAPED_NAME);
-			} else {
-				context.append(c);
-			}
-		}
-	},
-	ESCAPED_NAME {
-		@Override
-		public void process(ParserContext context, char c) {
-			if (c == '\'') {
-				context.setName();
-				context.setState(IDLE);
-			} else {
-				context.append(c);
-			}
-		}
-	},
-	ATTRIBUTE_KEY {
-		@Override
-		public void process(ParserContext context, char c) {
-			if (c == ']') {
-				context.setAttributeKey();
-				context.addAttribute();
-				context.setState(State.IDLE);
-			} else if (ArrayUtils.contains(OPERATORS, c)) {
-				context.setAttributeKey();
-				context.setState(State.ATTRIBUTE_OPERATOR);
-				context.append(c);
-			} else {
-				context.append(c);
-			}
-		}
-	},
-	ATTRIBUTE_OPERATOR {
-		@Override
-		public void process(ParserContext context, char c) {
-			if (!ArrayUtils.contains(OPERATORS, c)) {
-				context.setAttributeOperator();
-				context.append(c);
-				context.setState(ATTRIBUTE_VALUE);
-			} else {
-				context.append(c);
-			}
-		}
-	},
-	ATTRIBUTE_VALUE {
-		@Override
-		public void process(ParserContext context, char c) {
-			if (c == ']') {
-				context.setState(State.IDLE);
-				context.setAttributeValue();
-				context.addAttribute();
-			} else {
-				context.append(c);
-			}
-		}
-	},
-	MODIFIER {
-		@Override
-		public void process(ParserContext context, char c) {
-			if (c == ':') {
-				context.addModifier();
-			} else if (c == '(') {
-				context.setModifierName();
-				context.setState(State.MODIFIER_ARGUMENT);
-				context.increaseParentheses();
-			} else if (c == ' ') {
-				context.addModifier();
-				context.finishSelectorSegment();
-				context.setState(START);
-			} else if (c == ',' || c == 0) {
-				context.addModifier();
-				context.finishSelectorSegment();
-				context.finishSelector();
-				context.setState(START);
-			} else {
-				context.append(c);
-			}
-		}
-	},
-	MODIFIER_ARGUMENT {
-		@Override
-		public void process(ParserContext context, char c) {
-			if (c == ')') {
-				if (context.decreaseParentheses() == 0) {
-					context.addModifier();
-					context.setState(IDLE);
-				} else {
-					context.append(c);
-				}
-			} else if (c == '(') {
-				context.increaseParentheses();
-				context.append(c);
-			} else {
-				context.append(c);
-			}
-		}
-	};
-	public abstract void process(ParserContext context, char c);
+    START {
+        @Override
+        public void process(ParserContext context, char c) {
+            if (c == '/') {
+                context.setState(State.TYPE_WITH_SLASHES);
+                context.append(c);
+            } else if (c == '[') {
+                context.setState(State.ATTRIBUTE_KEY);
+            } else if (c == ':') {
+                context.setState(State.MODIFIER);
+            } else if (c == '>' || c == '+' || c == '~') {
+                context.setHierarchyOperator(c);
+            } else if (c == '#') {
+                context.setType();
+                context.setState(NAME);
+            } else if (c != ' ') {
+                context.setState(State.TYPE);
+                context.append(c);
+            }
+        }
+    },
+    IDLE {
+        @Override
+        public void process(ParserContext context, char c) {
+            if (c == '[') {
+                context.setState(State.ATTRIBUTE_KEY);
+            } else if (c == ':') {
+                context.setState(State.MODIFIER);
+            } else if (c == ' ') {
+                context.finishSelectorSegment();
+                context.setState(START);
+            } else if (c == ',' || c == 0) {
+                context.finishSelectorSegment();
+                context.finishSelector();
+                context.setState(START);
+            }
+        }
+    },
+    TYPE {
+        @Override
+        public void process(ParserContext context, char c) {
+            if (c == '/') {
+                context.setState(State.TYPE_WITH_SLASHES);
+                context.append(c);
+            } else if (c == '[') {
+                context.setState(State.ATTRIBUTE_KEY);
+                context.setType();
+            } else if (c == ':') {
+                context.setState(State.TYPE_WITH_SLASHES);
+                context.append(c);
+            } else if (c == '#') {
+                context.setType();
+                context.setState(NAME);
+            } else if (c == ' ') {
+                context.setType();
+                context.finishSelectorSegment();
+                context.setState(START);
+            } else if (c == ',' || c == 0) {
+                context.setType();
+                context.finishSelectorSegment();
+                context.finishSelector();
+                context.setState(START);
+            } else {
+                context.append(c);
+            }
+        }
+    },
+    TYPE_WITH_SLASHES {
+        @Override
+        public void process(ParserContext context, char c) {
+            if (c == '[') {
+                context.setState(State.ATTRIBUTE_KEY);
+                context.setType();
+            } else if (c == ':') {
+                context.setState(State.MODIFIER);
+                context.setType();
+            } else if (c == '#') {
+                context.setType();
+                context.setState(NAME);
+            } else if (c == ' ') {
+                context.setType();
+                context.finishSelectorSegment();
+                context.setState(START);
+            } else if (c == ',' || c == 0) {
+                context.setType();
+                context.finishSelectorSegment();
+                context.finishSelector();
+                context.setState(START);
+            } else {
+                context.append(c);
+            }
+        }
+    },
+    NAME {
+        @Override
+        public void process(ParserContext context, char c) {
+            if (c == '[') {
+                context.setName();
+                context.setState(State.ATTRIBUTE_KEY);
+            } else if (c == ':') {
+                context.setName();
+                context.setState(State.MODIFIER);
+            } else if (c == ' ') {
+                context.setName();
+                context.finishSelectorSegment();
+                context.setState(START);
+            } else if (c == ',' || c == 0) {
+                context.setName();
+                context.finishSelectorSegment();
+                context.finishSelector();
+                context.setState(START);
+            } else if (c == '\'') {
+                context.setState(State.ESCAPED_NAME);
+            } else {
+                context.append(c);
+            }
+        }
+    },
+    ESCAPED_NAME {
+        @Override
+        public void process(ParserContext context, char c) {
+            if (c == '\'') {
+                context.setName();
+                context.setState(IDLE);
+            } else {
+                context.append(c);
+            }
+        }
+    },
+    ATTRIBUTE_KEY {
+        @Override
+        public void process(ParserContext context, char c) {
+            if (c == ']') {
+                context.setAttributeKey();
+                context.addAttribute();
+                context.setState(State.IDLE);
+            } else if (ArrayUtils.contains(OPERATORS, c)) {
+                context.setAttributeKey();
+                context.setState(State.ATTRIBUTE_OPERATOR);
+                context.append(c);
+            } else {
+                context.append(c);
+            }
+        }
+    },
+    ATTRIBUTE_OPERATOR {
+        @Override
+        public void process(ParserContext context, char c) {
+            if (!ArrayUtils.contains(OPERATORS, c)) {
+                context.setAttributeOperator();
+                context.append(c);
+                context.setState(ATTRIBUTE_VALUE);
+            } else {
+                context.append(c);
+            }
+        }
+    },
+    ATTRIBUTE_VALUE {
+        @Override
+        public void process(ParserContext context, char c) {
+            if (c == ']') {
+                context.setState(State.IDLE);
+                context.setAttributeValue();
+                context.addAttribute();
+            } else {
+                context.append(c);
+            }
+        }
+    },
+    MODIFIER {
+        @Override
+        public void process(ParserContext context, char c) {
+            if (c == ':') {
+                context.addModifier();
+            } else if (c == '(') {
+                context.setModifierName();
+                context.setState(State.MODIFIER_ARGUMENT);
+                context.increaseParentheses();
+            } else if (c == ' ') {
+                context.addModifier();
+                context.finishSelectorSegment();
+                context.setState(START);
+            } else if (c == ',' || c == 0) {
+                context.addModifier();
+                context.finishSelectorSegment();
+                context.finishSelector();
+                context.setState(START);
+            } else {
+                context.append(c);
+            }
+        }
+    },
+    MODIFIER_ARGUMENT {
+        @Override
+        public void process(ParserContext context, char c) {
+            if (c == ')') {
+                if (context.decreaseParentheses() == 0) {
+                    context.addModifier();
+                    context.setState(IDLE);
+                } else {
+                    context.append(c);
+                }
+            } else if (c == '(') {
+                context.increaseParentheses();
+                context.append(c);
+            } else {
+                context.append(c);
+            }
+        }
+    };
+    public abstract void process(ParserContext context, char c);
 
-	private static final char[] OPERATORS = "*~$!^=".toCharArray();
+    private static final char[] OPERATORS = "*~$!^=".toCharArray();
 }
diff --git a/src/main/java/org/apache/sling/query/impl/util/IteratorUtils.java b/src/main/java/org/apache/sling/query/impl/util/IteratorUtils.java
index 5f136ff..64398ae 100644
--- a/src/main/java/org/apache/sling/query/impl/util/IteratorUtils.java
+++ b/src/main/java/org/apache/sling/query/impl/util/IteratorUtils.java
@@ -24,18 +24,18 @@
 
 public final class IteratorUtils {
 
-	private IteratorUtils() {
-	}
+    private IteratorUtils() {
+    }
 
-	public static <T> Iterator<T> arrayIterator(T... elements) {
-		return Arrays.asList(elements).iterator();
-	}
+    public static <T> Iterator<T> arrayIterator(T... elements) {
+        return Arrays.asList(elements).iterator();
+    }
 
-	public static <T> Iterator<T> singleElementIterator(T element) {
-		return Arrays.asList(element).iterator();
-	}
+    public static <T> Iterator<T> singleElementIterator(T element) {
+        return Arrays.asList(element).iterator();
+    }
 
-	public static <T> Iterator<T> emptyIterator() {
-		return Arrays.<T> asList().iterator();
-	}
+    public static <T> Iterator<T> emptyIterator() {
+        return Arrays.<T>asList().iterator();
+    }
 }
diff --git a/src/main/java/org/apache/sling/query/impl/util/LazyList.java b/src/main/java/org/apache/sling/query/impl/util/LazyList.java
index 59d7de7..1063d61 100644
--- a/src/main/java/org/apache/sling/query/impl/util/LazyList.java
+++ b/src/main/java/org/apache/sling/query/impl/util/LazyList.java
@@ -28,251 +28,251 @@
 
 public class LazyList<E> implements List<E> {
 
-	private final class LazyListIterator implements ListIterator<E> {
-		private int index = 0;
+    private final class LazyListIterator implements ListIterator<E> {
+        private int index = 0;
 
-		private LazyListIterator() {
-			this.index = 0;
-		}
+        private LazyListIterator() {
+            this.index = 0;
+        }
 
-		private LazyListIterator(int index) {
-			this.index = index;
-		}
+        private LazyListIterator(int index) {
+            this.index = index;
+        }
 
-		@Override
-		public boolean hasNext() {
-			fillToSize(index + 1);
-			return arrayList.size() > index;
-		}
+        @Override
+        public boolean hasNext() {
+            fillToSize(index + 1);
+            return arrayList.size() > index;
+        }
 
-		@Override
-		public E next() {
-			if (!hasNext()) {
-				throw new NoSuchElementException();
-			}
-			return arrayList.get(index++);
-		}
+        @Override
+        public E next() {
+            if (!hasNext()) {
+                throw new NoSuchElementException();
+            }
+            return arrayList.get(index++);
+        }
 
-		@Override
-		public boolean hasPrevious() {
-			return index > 0;
-		}
+        @Override
+        public boolean hasPrevious() {
+            return index > 0;
+        }
 
-		@Override
-		public E previous() {
-			if (!hasPrevious()) {
-				throw new NoSuchElementException();
-			}
-			fillToSize(index);
-			return arrayList.get(--index);
-		}
+        @Override
+        public E previous() {
+            if (!hasPrevious()) {
+                throw new NoSuchElementException();
+            }
+            fillToSize(index);
+            return arrayList.get(--index);
+        }
 
-		@Override
-		public int nextIndex() {
-			return index;
-		}
+        @Override
+        public int nextIndex() {
+            return index;
+        }
 
-		@Override
-		public int previousIndex() {
-			return index - 1;
-		}
+        @Override
+        public int previousIndex() {
+            return index - 1;
+        }
 
-		@Override
-		public void remove() {
-			throw new UnsupportedOperationException();
-		}
+        @Override
+        public void remove() {
+            throw new UnsupportedOperationException();
+        }
 
-		@Override
-		public void set(E e) {
-			throw new UnsupportedOperationException();
-		}
+        @Override
+        public void set(E e) {
+            throw new UnsupportedOperationException();
+        }
 
-		@Override
-		public void add(E e) {
-			throw new UnsupportedOperationException();
-		}
-	}
+        @Override
+        public void add(E e) {
+            throw new UnsupportedOperationException();
+        }
+    }
 
-	private final List<E> arrayList;
+    private final List<E> arrayList;
 
-	private final Iterator<E> iterator;
+    private final Iterator<E> iterator;
 
-	public LazyList(Iterator<E> iterator) {
-		this.arrayList = new ArrayList<E>();
-		this.iterator = iterator;
-	}
+    public LazyList(Iterator<E> iterator) {
+        this.arrayList = new ArrayList<E>();
+        this.iterator = iterator;
+    }
 
-	private void fillAll() {
-		while (fillNext() != -1)
-			;
-	}
+    private void fillAll() {
+        while (fillNext() != -1)
+            ;
+    }
 
-	private void fillToSize(int size) {
-		for (int s = arrayList.size(); s < size; s++) {
-			if (fillNext() == -1) {
-				break;
-			}
-		}
-	}
+    private void fillToSize(int size) {
+        for (int s = arrayList.size(); s < size; s++) {
+            if (fillNext() == -1) {
+                break;
+            }
+        }
+    }
 
-	private int fillNext() {
-		if (iterator.hasNext()) {
-			E element = iterator.next();
-			arrayList.add(element);
-			return arrayList.size() - 1;
-		}
-		return -1;
-	}
+    private int fillNext() {
+        if (iterator.hasNext()) {
+            E element = iterator.next();
+            arrayList.add(element);
+            return arrayList.size() - 1;
+        }
+        return -1;
+    }
 
-	@Override
-	public int size() {
-		fillAll();
-		return arrayList.size();
-	}
+    @Override
+    public int size() {
+        fillAll();
+        return arrayList.size();
+    }
 
-	@Override
-	public boolean isEmpty() {
-		return arrayList.isEmpty() && !iterator.hasNext();
-	}
+    @Override
+    public boolean isEmpty() {
+        return arrayList.isEmpty() && !iterator.hasNext();
+    }
 
-	@Override
-	public boolean contains(Object o) {
-		return indexOf(o) != -1;
-	}
+    @Override
+    public boolean contains(Object o) {
+        return indexOf(o) != -1;
+    }
 
-	@Override
-	public Iterator<E> iterator() {
-		return new LazyListIterator();
-	}
+    @Override
+    public Iterator<E> iterator() {
+        return new LazyListIterator();
+    }
 
-	@Override
-	public Object[] toArray() {
-		fillAll();
-		return arrayList.toArray();
-	}
+    @Override
+    public Object[] toArray() {
+        fillAll();
+        return arrayList.toArray();
+    }
 
-	@Override
-	public <T> T[] toArray(T[] a) {
-		fillAll();
-		return arrayList.toArray(a);
-	}
+    @Override
+    public <T> T[] toArray(T[] a) {
+        fillAll();
+        return arrayList.toArray(a);
+    }
 
-	@Override
-	public boolean containsAll(Collection<?> c) {
-		for (Object o : c) {
-			if (!contains(o)) {
-				return false;
-			}
-		}
-		return true;
-	}
+    @Override
+    public boolean containsAll(Collection<?> c) {
+        for (Object o : c) {
+            if (!contains(o)) {
+                return false;
+            }
+        }
+        return true;
+    }
 
-	@Override
-	public E get(int index) {
-		fillToSize(index + 1);
-		return arrayList.get(index);
-	}
+    @Override
+    public E get(int index) {
+        fillToSize(index + 1);
+        return arrayList.get(index);
+    }
 
-	@Override
-	public int indexOf(Object o) {
-		int index = arrayList.indexOf(o);
-		if (index > -1) {
-			return index;
-		}
-		int addedIndex;
-		while ((addedIndex = fillNext()) != -1) {
-			E element = arrayList.get(addedIndex);
-			if (element == null && o == null) {
-				return addedIndex;
-			} else if (element != null && element.equals(o)) {
-				return addedIndex;
-			}
-		}
-		return -1;
-	}
+    @Override
+    public int indexOf(Object o) {
+        int index = arrayList.indexOf(o);
+        if (index > -1) {
+            return index;
+        }
+        int addedIndex;
+        while ((addedIndex = fillNext()) != -1) {
+            E element = arrayList.get(addedIndex);
+            if (element == null && o == null) {
+                return addedIndex;
+            } else if (element != null && element.equals(o)) {
+                return addedIndex;
+            }
+        }
+        return -1;
+    }
 
-	@Override
-	public int lastIndexOf(Object o) {
-		fillAll();
-		return arrayList.lastIndexOf(o);
-	}
+    @Override
+    public int lastIndexOf(Object o) {
+        fillAll();
+        return arrayList.lastIndexOf(o);
+    }
 
-	@Override
-	public ListIterator<E> listIterator() {
-		return new LazyListIterator();
-	}
+    @Override
+    public ListIterator<E> listIterator() {
+        return new LazyListIterator();
+    }
 
-	@Override
-	public ListIterator<E> listIterator(int index) {
-		return new LazyListIterator(index);
-	}
+    @Override
+    public ListIterator<E> listIterator(int index) {
+        return new LazyListIterator(index);
+    }
 
-	@Override
-	public List<E> subList(int fromIndex, int toIndex) {
-		fillToSize(toIndex);
-		return arrayList.subList(fromIndex, toIndex);
-	}
+    @Override
+    public List<E> subList(int fromIndex, int toIndex) {
+        fillToSize(toIndex);
+        return arrayList.subList(fromIndex, toIndex);
+    }
 
-	@Override
-	public boolean equals(Object o) {
-		fillAll();
-		return arrayList.equals(o);
-	}
+    @Override
+    public boolean equals(Object o) {
+        fillAll();
+        return arrayList.equals(o);
+    }
 
-	@Override
-	public int hashCode() {
-		fillAll();
-		return arrayList.hashCode();
-	}
+    @Override
+    public int hashCode() {
+        fillAll();
+        return arrayList.hashCode();
+    }
 
-	@Override
-	public boolean add(E e) {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public boolean add(E e) {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public boolean remove(Object o) {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public boolean remove(Object o) {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public boolean addAll(Collection<? extends E> c) {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public boolean addAll(Collection<? extends E> c) {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public boolean addAll(int index, Collection<? extends E> c) {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public boolean addAll(int index, Collection<? extends E> c) {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public boolean removeAll(Collection<?> c) {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public boolean removeAll(Collection<?> c) {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public boolean retainAll(Collection<?> c) {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public boolean retainAll(Collection<?> c) {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public void clear() {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public void clear() {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public E set(int index, E element) {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public E set(int index, E element) {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public void add(int index, E element) {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public void add(int index, E element) {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public E remove(int index) {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public E remove(int index) {
+        throw new UnsupportedOperationException();
+    }
 
 }
diff --git a/src/test/java/org/apache/sling/query/AddTest.java b/src/test/java/org/apache/sling/query/AddTest.java
index be5bebe..8b4d954 100644
--- a/src/test/java/org/apache/sling/query/AddTest.java
+++ b/src/test/java/org/apache/sling/query/AddTest.java
@@ -27,32 +27,31 @@
 
 public class AddTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testSimpleAdd() {
-		SlingQuery query = $(tree.getChild("application")).add(tree.getChild("home"));
-		assertResourceSetEquals(query.iterator(), "application", "home");
-	}
+    @Test
+    public void testSimpleAdd() {
+        SlingQuery query = $(tree.getChild("application")).add(tree.getChild("home"));
+        assertResourceSetEquals(query.iterator(), "application", "home");
+    }
 
-	@Test
-	public void testAddToChildren() {
-		SlingQuery query = $(tree).children("cq:Page").add(tree.getChild("home/java"));
-		assertResourceSetEquals(query.iterator(), "application", "home", "java");
-	}
+    @Test
+    public void testAddToChildren() {
+        SlingQuery query = $(tree).children("cq:Page").add(tree.getChild("home/java"));
+        assertResourceSetEquals(query.iterator(), "application", "home", "java");
+    }
 
-	@Test
-	public void testAddedChildren() {
-		SlingQuery query = $(tree).add(tree.getChild("home/java")).children("cq:Page");
-		assertResourceSetEquals(query.iterator(), "application", "home", "email", "labels", "navigation");
-	}
+    @Test
+    public void testAddedChildren() {
+        SlingQuery query = $(tree).add(tree.getChild("home/java")).children("cq:Page");
+        assertResourceSetEquals(query.iterator(), "application", "home", "email", "labels", "navigation");
+    }
 
-	@Test
-	public void testAddIterable() {
-		SlingQuery query1 = $(tree).children("cq:Page");
-		SlingQuery query2 = $(tree.getChild("home/java")).children("cq:Page");
-		assertResourceSetEquals(query1.add(query2).iterator(), "application", "home", "email", "labels",
-				"navigation");
-	}
+    @Test
+    public void testAddIterable() {
+        SlingQuery query1 = $(tree).children("cq:Page");
+        SlingQuery query2 = $(tree.getChild("home/java")).children("cq:Page");
+        assertResourceSetEquals(query1.add(query2).iterator(), "application", "home", "email", "labels", "navigation");
+    }
 
 }
diff --git a/src/test/java/org/apache/sling/query/AttributeOperatorTest.java b/src/test/java/org/apache/sling/query/AttributeOperatorTest.java
index 3140254..b1dd5b3 100644
--- a/src/test/java/org/apache/sling/query/AttributeOperatorTest.java
+++ b/src/test/java/org/apache/sling/query/AttributeOperatorTest.java
@@ -28,132 +28,131 @@
 
 public class AttributeOperatorTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testEquals() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title=CQ Commons demo]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testEquals() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title=CQ Commons demo]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testEqualsWithMultivalue() {
-		SlingQuery query = $(tree).children("cq:PageContent[cq:allowedTemplates=other demo template]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testEqualsWithMultivalue() {
+        SlingQuery query = $(tree).children("cq:PageContent[cq:allowedTemplates=other demo template]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testNotEquals() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title=123]");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNotEquals() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title=123]");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testContains() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title*=mmons de]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testContains() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title*=mmons de]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testContainsWithMultivalue() {
-		SlingQuery query = $(tree).children("cq:PageContent[cq:allowedTemplates*=her demo templa]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testContainsWithMultivalue() {
+        SlingQuery query = $(tree).children("cq:PageContent[cq:allowedTemplates*=her demo templa]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testNotContains() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title*=123]");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNotContains() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title*=123]");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testContainsWord() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title~=Commons]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testContainsWord() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title~=Commons]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testContainsWordWithMultivalue() {
-		SlingQuery query = $(tree).children("cq:PageContent[cq:allowedTemplates~=template]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testContainsWordWithMultivalue() {
+        SlingQuery query = $(tree).children("cq:PageContent[cq:allowedTemplates~=template]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testNotContainsWord() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title~=mmons de]");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNotContainsWord() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title~=mmons de]");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testEndsWith() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title$=demo]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testEndsWith() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title$=demo]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testEndsWithWithMultivalue() {
-		SlingQuery query = $(tree).children("cq:PageContent[cq:allowedTemplates$=demo template]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testEndsWithWithMultivalue() {
+        SlingQuery query = $(tree).children("cq:PageContent[cq:allowedTemplates$=demo template]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testNotEndsWith() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title$=CQ]");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNotEndsWith() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title$=CQ]");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testNotEquals2() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title!=123]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testNotEquals2() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title!=123]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testNotNotEquals() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title!=CQ Commons demo]");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNotNotEquals() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title!=CQ Commons demo]");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testStartsWith() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title^=CQ]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testStartsWith() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title^=CQ]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testStartsWithWithMultivalue() {
-		SlingQuery query = $(tree).children("cq:PageContent[cq:allowedTemplates^=other demo]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testStartsWithWithMultivalue() {
+        SlingQuery query = $(tree).children("cq:PageContent[cq:allowedTemplates^=other demo]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testNotStartsWith() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title^=Commons]");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNotStartsWith() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title^=Commons]");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testHas() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testHas() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testNotHas() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title123]");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNotHas() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title123]");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testMultipleAttributes() {
-		SlingQuery query = $(tree).children("cq:PageContent[jcr:title=CQ Commons demo][jcr:createdBy=admin]");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testMultipleAttributes() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title=CQ Commons demo][jcr:createdBy=admin]");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testNotMultipleAttributes() {
-		SlingQuery query = $(tree).children(
-				"cq:PageContent[jcr:title=CQ Commons demo aaa][jcr:createdBy=admin]");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNotMultipleAttributes() {
+        SlingQuery query = $(tree).children("cq:PageContent[jcr:title=CQ Commons demo aaa][jcr:createdBy=admin]");
+        assertEmptyIterator(query.iterator());
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/ChildrenTest.java b/src/test/java/org/apache/sling/query/ChildrenTest.java
index 3a46970..030f2d6 100644
--- a/src/test/java/org/apache/sling/query/ChildrenTest.java
+++ b/src/test/java/org/apache/sling/query/ChildrenTest.java
@@ -28,35 +28,35 @@
 
 public class ChildrenTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testChildren() {
-		SlingQuery query = $(tree).children();
-		assertResourceSetEquals(query.iterator(), "jcr:content", "application", "home");
-	}
+    @Test
+    public void testChildren() {
+        SlingQuery query = $(tree).children();
+        assertResourceSetEquals(query.iterator(), "jcr:content", "application", "home");
+    }
 
-	@Test
-	public void testNameChildren() {
-		SlingQuery query = $(tree).children("cq:Page#application");
-		assertResourceSetEquals(query.iterator(), "application");
-	}
+    @Test
+    public void testNameChildren() {
+        SlingQuery query = $(tree).children("cq:Page#application");
+        assertResourceSetEquals(query.iterator(), "application");
+    }
 
-	@Test
-	public void testFilteredChildren() {
-		SlingQuery query = $(tree).children("cq:Page");
-		assertResourceSetEquals(query.iterator(), "application", "home");
-	}
+    @Test
+    public void testFilteredChildren() {
+        SlingQuery query = $(tree).children("cq:Page");
+        assertResourceSetEquals(query.iterator(), "application", "home");
+    }
 
-	@Test
-	public void testNoChildren() {
-		SlingQuery query = $(tree.getChild("jcr:content")).children();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNoChildren() {
+        SlingQuery query = $(tree.getChild("jcr:content")).children();
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testLeafChildren() {
-		SlingQuery query = $(tree.getChild("jcr:content")).children();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testLeafChildren() {
+        SlingQuery query = $(tree.getChild("jcr:content")).children();
+        assertEmptyIterator(query.iterator());
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/ClosestTest.java b/src/test/java/org/apache/sling/query/ClosestTest.java
index 232bc6f..259522f 100644
--- a/src/test/java/org/apache/sling/query/ClosestTest.java
+++ b/src/test/java/org/apache/sling/query/ClosestTest.java
@@ -28,25 +28,25 @@
 
 public class ClosestTest {
 
-	private static final String PATH = "application/configuration/labels/jcr:content/configParsys/tab_0/items/text";
+    private static final String PATH = "application/configuration/labels/jcr:content/configParsys/tab_0/items/text";
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testClosest() {
-		SlingQuery query = $(tree.getChild(PATH)).closest("cq:Page");
-		assertResourceSetEquals(query.iterator(), "labels");
-	}
+    @Test
+    public void testClosest() {
+        SlingQuery query = $(tree.getChild(PATH)).closest("cq:Page");
+        assertResourceSetEquals(query.iterator(), "labels");
+    }
 
-	@Test
-	public void testNoClosest() {
-		SlingQuery query = $(tree.getChild(PATH)).closest("cq:Undefined");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNoClosest() {
+        SlingQuery query = $(tree.getChild(PATH)).closest("cq:Undefined");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testClosestOnRoot() {
-		SlingQuery query = $(tree).closest("cq:Page");
-		assertResourceSetEquals(query.iterator(), "/");
-	}
+    @Test
+    public void testClosestOnRoot() {
+        SlingQuery query = $(tree).closest("cq:Page");
+        assertResourceSetEquals(query.iterator(), "/");
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/FilterTest.java b/src/test/java/org/apache/sling/query/FilterTest.java
index de1971f..bd3a7af 100644
--- a/src/test/java/org/apache/sling/query/FilterTest.java
+++ b/src/test/java/org/apache/sling/query/FilterTest.java
@@ -29,18 +29,18 @@
 
 public class FilterTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testFilter() {
-		SlingQuery query = $(tree).searchStrategy(SearchStrategy.DFS).find()
-				.filter(resource -> "configParsys".equals(resource.getName()));
-		assertResourceSetEquals(query.iterator(), "configParsys");
-	}
+    @Test
+    public void testFilter() {
+        SlingQuery query = $(tree).searchStrategy(SearchStrategy.DFS).find()
+                .filter(resource -> "configParsys".equals(resource.getName()));
+        assertResourceSetEquals(query.iterator(), "configParsys");
+    }
 
-	@Test
-	public void testFilterOnEmptyCollection() {
-		SlingQuery query = $(tree).children("cq:Undefined").filter(resource -> true);
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testFilterOnEmptyCollection() {
+        SlingQuery query = $(tree).children("cq:Undefined").filter(resource -> true);
+        assertEmptyIterator(query.iterator());
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/FindTest.java b/src/test/java/org/apache/sling/query/FindTest.java
index 7a2ed8c..7546238 100644
--- a/src/test/java/org/apache/sling/query/FindTest.java
+++ b/src/test/java/org/apache/sling/query/FindTest.java
@@ -30,58 +30,58 @@
 
 public class FindTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testFind() {
-		SlingQuery query = $(tree.getChild("application/configuration/labels")).searchStrategy(
-				SearchStrategy.DFS).find();
-		assertResourceSetEquals(query.iterator(), "jcr:content", "configParsys", "tab", "tab_0", "items",
-				"items", "localizedtext", "text", "text_0", "text", "lang");
-	}
+    @Test
+    public void testFind() {
+        SlingQuery query = $(tree.getChild("application/configuration/labels")).searchStrategy(SearchStrategy.DFS)
+                .find();
+        assertResourceSetEquals(query.iterator(), "jcr:content", "configParsys", "tab", "tab_0", "items", "items",
+                "localizedtext", "text", "text_0", "text", "lang");
+    }
 
-	@Test
-	public void testFindWithFilter() {
-		SlingQuery query = $(tree.getChild("application/configuration/labels")).searchStrategy(
-				SearchStrategy.DFS).find("cq-commons/config/components/text");
-		assertResourceSetEquals(query.iterator(), "text", "text");
-	}
+    @Test
+    public void testFindWithFilter() {
+        SlingQuery query = $(tree.getChild("application/configuration/labels")).searchStrategy(SearchStrategy.DFS)
+                .find("cq-commons/config/components/text");
+        assertResourceSetEquals(query.iterator(), "text", "text");
+    }
 
-	@Test
-	public void testFindWithResources() {
-		SlingQuery query = $(tree.getChild("home")).find(
-				$(tree.getChild("home/java"), tree.getChild("home/js"), tree.getChild("application")));
-		assertResourceSetEquals(query.iterator(), "java", "js");
-	}
+    @Test
+    public void testFindWithResources() {
+        SlingQuery query = $(tree.getChild("home"))
+                .find($(tree.getChild("home/java"), tree.getChild("home/js"), tree.getChild("application")));
+        assertResourceSetEquals(query.iterator(), "java", "js");
+    }
 
-	@Test
-	public void testLeaveFind() {
-		SlingQuery query = $(
-				tree.getChild("application/configuration/labels/jcr:content/configParsys/tab/items/localizedtext/lang"))
-				.searchStrategy(SearchStrategy.DFS).find();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testLeaveFind() {
+        SlingQuery query = $(
+                tree.getChild("application/configuration/labels/jcr:content/configParsys/tab/items/localizedtext/lang"))
+                        .searchStrategy(SearchStrategy.DFS).find();
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testEmptyFind() {
-		SlingQuery query = $(tree.getChild("application/configuration/labels")).searchStrategy(
-				SearchStrategy.DFS).find("cq:Undefined");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testEmptyFind() {
+        SlingQuery query = $(tree.getChild("application/configuration/labels")).searchStrategy(SearchStrategy.DFS)
+                .find("cq:Undefined");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testBfsFind() {
-		SlingQuery query = $(tree.getChild("application/configuration/labels")).searchStrategy(
-				SearchStrategy.BFS).find("");
-		assertResourceListEquals(query.iterator(), "jcr:content", "configParsys", "tab", "tab_0", "items",
-				"items", "localizedtext", "text", "text_0", "text", "lang");
-	}
+    @Test
+    public void testBfsFind() {
+        SlingQuery query = $(tree.getChild("application/configuration/labels")).searchStrategy(SearchStrategy.BFS)
+                .find("");
+        assertResourceListEquals(query.iterator(), "jcr:content", "configParsys", "tab", "tab_0", "items", "items",
+                "localizedtext", "text", "text_0", "text", "lang");
+    }
 
-	@Test
-	public void testDfsFind() {
-		SlingQuery query = $(tree.getChild("application/configuration/labels")).searchStrategy(
-				SearchStrategy.DFS).find("");
-		assertResourceListEquals(query.iterator(), "jcr:content", "configParsys", "tab", "items",
-				"localizedtext", "lang", "text", "tab_0", "items", "text_0", "text");
-	}
+    @Test
+    public void testDfsFind() {
+        SlingQuery query = $(tree.getChild("application/configuration/labels")).searchStrategy(SearchStrategy.DFS)
+                .find("");
+        assertResourceListEquals(query.iterator(), "jcr:content", "configParsys", "tab", "items", "localizedtext",
+                "lang", "text", "tab_0", "items", "text_0", "text");
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/HasTest.java b/src/test/java/org/apache/sling/query/HasTest.java
index 95b23ea..7155606 100644
--- a/src/test/java/org/apache/sling/query/HasTest.java
+++ b/src/test/java/org/apache/sling/query/HasTest.java
@@ -28,22 +28,22 @@
 
 public class HasTest {
 
-	private static final String PAR_PATH = "home/java";
+    private static final String PAR_PATH = "home/java";
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testHas() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).searchStrategy(SearchStrategy.DFS).children()
-				.has("demo/core/components/configValue");
-		assertResourceSetEquals(query.iterator(), "labels");
-	}
+    @Test
+    public void testHas() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).searchStrategy(SearchStrategy.DFS).children()
+                .has("demo/core/components/configValue");
+        assertResourceSetEquals(query.iterator(), "labels");
+    }
 
-	@Test
-	public void testHasResource() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children().has(
-				$(tree.getChild("home/java/labels/jcr:content/par")));
-		assertResourceSetEquals(query.iterator(), "labels");
-	}
+    @Test
+    public void testHasResource() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children()
+                .has($(tree.getChild("home/java/labels/jcr:content/par")));
+        assertResourceSetEquals(query.iterator(), "labels");
+    }
 
 }
diff --git a/src/test/java/org/apache/sling/query/HierarchySelectorTest.java b/src/test/java/org/apache/sling/query/HierarchySelectorTest.java
index b81ecc0..2de65d0 100644
--- a/src/test/java/org/apache/sling/query/HierarchySelectorTest.java
+++ b/src/test/java/org/apache/sling/query/HierarchySelectorTest.java
@@ -28,30 +28,30 @@
 
 public class HierarchySelectorTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testChildrenWithAttribute() {
-		SlingQuery query = $(tree.getChild("home")).children("cq:Page > cq:PageContent[jcr:title=Java]");
-		assertResourceSetEquals(query.iterator(), "java");
-	}
+    @Test
+    public void testChildrenWithAttribute() {
+        SlingQuery query = $(tree.getChild("home")).children("cq:Page > cq:PageContent[jcr:title=Java]");
+        assertResourceSetEquals(query.iterator(), "java");
+    }
 
-	@Test
-	public void testDescendant() {
-		SlingQuery query = $(tree.getChild("home")).searchStrategy(SearchStrategy.DFS).children(
-				"cq:Page demo/core/components/configValue");
-		assertResourceSetEquals(query.iterator(), "java");
-	}
+    @Test
+    public void testDescendant() {
+        SlingQuery query = $(tree.getChild("home")).searchStrategy(SearchStrategy.DFS)
+                .children("cq:Page demo/core/components/configValue");
+        assertResourceSetEquals(query.iterator(), "java");
+    }
 
-	@Test
-	public void testNextAdjacent() {
-		SlingQuery query = $(tree).children().filter("cq:PageContent + cq:Page");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testNextAdjacent() {
+        SlingQuery query = $(tree).children().filter("cq:PageContent + cq:Page");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testNextSiblings() {
-		SlingQuery query = $(tree).children("cq:PageContent ~ cq:Page");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testNextSiblings() {
+        SlingQuery query = $(tree).children("cq:PageContent ~ cq:Page");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/LastTest.java b/src/test/java/org/apache/sling/query/LastTest.java
index 86a65d8..36da35a 100644
--- a/src/test/java/org/apache/sling/query/LastTest.java
+++ b/src/test/java/org/apache/sling/query/LastTest.java
@@ -43,7 +43,7 @@
         SlingQuery query = $(tree).children("cq:Undefined").last();
         assertEmptyIterator(query.iterator());
     }
-    
+
     @Test
     public void testLastAfterFilter() {
         SlingQuery query = $(tree.getChild(PAR_PATH)).children().filter("[key=helloWorld]").last();
diff --git a/src/test/java/org/apache/sling/query/ListTest.java b/src/test/java/org/apache/sling/query/ListTest.java
index 702fbd1..02b3678 100644
--- a/src/test/java/org/apache/sling/query/ListTest.java
+++ b/src/test/java/org/apache/sling/query/ListTest.java
@@ -31,64 +31,64 @@
 
 public class ListTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testIterator() {
-		List<Resource> list = $(tree).children().asList();
-		assertResourceSetEquals(list.iterator(), "jcr:content", "application", "home");
-	}
-	
-	@Test
-	public void testListIterator() {
-		ListIterator<Resource> iterator = $(tree).children().asList().listIterator();
-		Assert.assertEquals("jcr:content", iterator.next().getName());
-		Assert.assertEquals("application", iterator.next().getName());
-		Assert.assertEquals("home", iterator.next().getName());
-		Assert.assertEquals("home", iterator.previous().getName());
-		Assert.assertEquals("application", iterator.previous().getName());
-		Assert.assertEquals("jcr:content", iterator.previous().getName());
-	}
+    @Test
+    public void testIterator() {
+        List<Resource> list = $(tree).children().asList();
+        assertResourceSetEquals(list.iterator(), "jcr:content", "application", "home");
+    }
 
-	@Test
-	public void testSize() {
-		List<Resource> list = $(tree).children().asList();
-		Assert.assertEquals(3, list.size());
-	}
+    @Test
+    public void testListIterator() {
+        ListIterator<Resource> iterator = $(tree).children().asList().listIterator();
+        Assert.assertEquals("jcr:content", iterator.next().getName());
+        Assert.assertEquals("application", iterator.next().getName());
+        Assert.assertEquals("home", iterator.next().getName());
+        Assert.assertEquals("home", iterator.previous().getName());
+        Assert.assertEquals("application", iterator.previous().getName());
+        Assert.assertEquals("jcr:content", iterator.previous().getName());
+    }
 
-	@Test
-	public void testGet() {
-		List<Resource> list = $(tree).children().asList();
-		Assert.assertEquals("jcr:content", list.get(0).getName());
-		Assert.assertEquals("application", list.get(1).getName());
-		Assert.assertEquals("home", list.get(2).getName());
-	}
+    @Test
+    public void testSize() {
+        List<Resource> list = $(tree).children().asList();
+        Assert.assertEquals(3, list.size());
+    }
 
-	@Test
-	public void testIndexOf() {
-		Resource home = $(tree).children("#home").iterator().next();
-		List<Resource> list = $(tree).children().asList();
-		Assert.assertEquals(2, list.indexOf(home));
-		Assert.assertEquals(-1, list.indexOf(tree));
-	}
+    @Test
+    public void testGet() {
+        List<Resource> list = $(tree).children().asList();
+        Assert.assertEquals("jcr:content", list.get(0).getName());
+        Assert.assertEquals("application", list.get(1).getName());
+        Assert.assertEquals("home", list.get(2).getName());
+    }
 
-	@Test
-	public void testContains() {
-		Resource home = $(tree).children("#home").iterator().next();
-		List<Resource> list = $(tree).children().asList();
-		Assert.assertEquals(true, list.contains(home));
-		Assert.assertEquals(false, list.contains(tree));
-	}
+    @Test
+    public void testIndexOf() {
+        Resource home = $(tree).children("#home").iterator().next();
+        List<Resource> list = $(tree).children().asList();
+        Assert.assertEquals(2, list.indexOf(home));
+        Assert.assertEquals(-1, list.indexOf(tree));
+    }
 
-	@Test
-	public void testEmpty() {
-		Assert.assertEquals(true, $(tree).children("#aaa").asList().isEmpty());
-		Assert.assertEquals(false, $(tree).children().asList().isEmpty());
-	}
+    @Test
+    public void testContains() {
+        Resource home = $(tree).children("#home").iterator().next();
+        List<Resource> list = $(tree).children().asList();
+        Assert.assertEquals(true, list.contains(home));
+        Assert.assertEquals(false, list.contains(tree));
+    }
 
-	@Test
-	public void testSublist() {
-		List<Resource> list = $(tree).children().asList().subList(1, 3);
-		assertResourceSetEquals(list.iterator(), "application", "home");
-	}
+    @Test
+    public void testEmpty() {
+        Assert.assertEquals(true, $(tree).children("#aaa").asList().isEmpty());
+        Assert.assertEquals(false, $(tree).children().asList().isEmpty());
+    }
+
+    @Test
+    public void testSublist() {
+        List<Resource> list = $(tree).children().asList().subList(1, 3);
+        assertResourceSetEquals(list.iterator(), "application", "home");
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/MapTest.java b/src/test/java/org/apache/sling/query/MapTest.java
index 6be2f5c..845583a 100644
--- a/src/test/java/org/apache/sling/query/MapTest.java
+++ b/src/test/java/org/apache/sling/query/MapTest.java
@@ -29,16 +29,16 @@
 
 public class MapTest {
 
-	private static final String PAR_PATH = "home/java/labels/jcr:content/par";
+    private static final String PAR_PATH = "home/java/labels/jcr:content/par";
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testMap() {
-		@SuppressWarnings("rawtypes")
-		Iterable<Map> iterable = $(tree.getChild(PAR_PATH)).children().map(Map.class);
-		for (Map<?, ?> m : iterable) {
-			Assert.assertEquals("nt:unstructured", m.get("jcr:primaryType"));
-		}
-	}
+    @Test
+    public void testMap() {
+        @SuppressWarnings("rawtypes")
+        Iterable<Map> iterable = $(tree.getChild(PAR_PATH)).children().map(Map.class);
+        for (Map<?, ?> m : iterable) {
+            Assert.assertEquals("nt:unstructured", m.get("jcr:primaryType"));
+        }
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/MultipleSelectorTest.java b/src/test/java/org/apache/sling/query/MultipleSelectorTest.java
index c019b6d..0655bad 100644
--- a/src/test/java/org/apache/sling/query/MultipleSelectorTest.java
+++ b/src/test/java/org/apache/sling/query/MultipleSelectorTest.java
@@ -27,20 +27,20 @@
 
 public class MultipleSelectorTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testTwoNames() {
-		SlingQuery query = $(tree).children("#application, #home");
-		assertResourceSetEquals(query.iterator(), "application", "home");
-	}
+    @Test
+    public void testTwoNames() {
+        SlingQuery query = $(tree).children("#application, #home");
+        assertResourceSetEquals(query.iterator(), "application", "home");
+    }
 
-	@Test
-	public void testEverything() {
-		SlingQuery query = $(tree).children(":not(#application), #application");
-		assertResourceSetEquals(query.iterator(), "jcr:content", "application", "home");
+    @Test
+    public void testEverything() {
+        SlingQuery query = $(tree).children(":not(#application), #application");
+        assertResourceSetEquals(query.iterator(), "jcr:content", "application", "home");
 
-		query = $(tree).children("#application, :not(#application)");
-		assertResourceSetEquals(query.iterator(), "jcr:content", "application", "home");
-	}
+        query = $(tree).children("#application, :not(#application)");
+        assertResourceSetEquals(query.iterator(), "jcr:content", "application", "home");
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/NextPrevAllTest.java b/src/test/java/org/apache/sling/query/NextPrevAllTest.java
index 42df107..cac211c 100644
--- a/src/test/java/org/apache/sling/query/NextPrevAllTest.java
+++ b/src/test/java/org/apache/sling/query/NextPrevAllTest.java
@@ -28,69 +28,69 @@
 
 public class NextPrevAllTest {
 
-	private static final String PAR_PATH = "home/java/labels/jcr:content/par";
+    private static final String PAR_PATH = "home/java/labels/jcr:content/par";
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testNextAll() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_0")).nextAll();
-		assertResourceSetEquals(query.iterator(), "configvalue_1", "configvalue_2");
-	}
+    @Test
+    public void testNextAll() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_0")).nextAll();
+        assertResourceSetEquals(query.iterator(), "configvalue_1", "configvalue_2");
+    }
 
-	@Test
-	public void testPrevAll() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_0")).prevAll();
-		assertResourceSetEquals(query.iterator(), "richtext", "configvalue");
-	}
+    @Test
+    public void testPrevAll() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_0")).prevAll();
+        assertResourceSetEquals(query.iterator(), "richtext", "configvalue");
+    }
 
-	@Test
-	public void testNextAllFiltered() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).nextAll(
-				"demo/core/components/configValue");
-		assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1", "configvalue_2");
-	}
+    @Test
+    public void testNextAllFiltered() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue"))
+                .nextAll("demo/core/components/configValue");
+        assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1", "configvalue_2");
+    }
 
-	@Test
-	public void testPrevAllFiltered() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_0")).prevAll(
-				"demo/core/components/richtext");
-		assertResourceSetEquals(query.iterator(), "richtext");
-	}
+    @Test
+    public void testPrevAllFiltered() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_0"))
+                .prevAll("demo/core/components/richtext");
+        assertResourceSetEquals(query.iterator(), "richtext");
+    }
 
-	@Test
-	public void testNextAllInvalidFiltered() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).nextAll("cq:Undefined");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNextAllInvalidFiltered() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).nextAll("cq:Undefined");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testPrevAllInvalidFiltered() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).prevAll("cq:Undefined");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testPrevAllInvalidFiltered() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).prevAll("cq:Undefined");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testNextAllOnLast() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).nextAll();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNextAllOnLast() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).nextAll();
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testPrevAllOnFirst() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("richtext")).prevAll();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testPrevAllOnFirst() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("richtext")).prevAll();
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testNextAllOnRoot() {
-		SlingQuery query = $(tree).nextAll();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNextAllOnRoot() {
+        SlingQuery query = $(tree).nextAll();
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testPrevAllOnRoot() {
-		SlingQuery query = $(tree).prevAll();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testPrevAllOnRoot() {
+        SlingQuery query = $(tree).prevAll();
+        assertEmptyIterator(query.iterator());
+    }
 }
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/query/NextPrevTest.java b/src/test/java/org/apache/sling/query/NextPrevTest.java
index ca6c303..2af42ca 100644
--- a/src/test/java/org/apache/sling/query/NextPrevTest.java
+++ b/src/test/java/org/apache/sling/query/NextPrevTest.java
@@ -28,69 +28,67 @@
 
 public class NextPrevTest {
 
-	private static final String PAR_PATH = "home/java/labels/jcr:content/par";
+    private static final String PAR_PATH = "home/java/labels/jcr:content/par";
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testNext() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).next();
-		assertResourceSetEquals(query.iterator(), "configvalue_0");
-	}
+    @Test
+    public void testNext() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).next();
+        assertResourceSetEquals(query.iterator(), "configvalue_0");
+    }
 
-	@Test
-	public void testPrev() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).prev();
-		assertResourceSetEquals(query.iterator(), "richtext");
-	}
+    @Test
+    public void testPrev() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).prev();
+        assertResourceSetEquals(query.iterator(), "richtext");
+    }
 
-	@Test
-	public void testNextFiltered() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).next(
-				"demo/core/components/configValue");
-		assertResourceSetEquals(query.iterator(), "configvalue_0");
-	}
+    @Test
+    public void testNextFiltered() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).next("demo/core/components/configValue");
+        assertResourceSetEquals(query.iterator(), "configvalue_0");
+    }
 
-	@Test
-	public void testPrevFiltered() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).prev(
-				"demo/core/components/richtext");
-		assertResourceSetEquals(query.iterator(), "richtext");
-	}
+    @Test
+    public void testPrevFiltered() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).prev("demo/core/components/richtext");
+        assertResourceSetEquals(query.iterator(), "richtext");
+    }
 
-	@Test
-	public void testNextInvalidFiltered() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).next("cq:Undefined");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNextInvalidFiltered() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).next("cq:Undefined");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testPrevInvalidFiltered() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).prev("cq:Undefined");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testPrevInvalidFiltered() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).prev("cq:Undefined");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testNextOnLast() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).next();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNextOnLast() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).next();
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testPrevOnFirst() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("richtext")).prev();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testPrevOnFirst() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("richtext")).prev();
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testNextOnRoot() {
-		SlingQuery query = $(tree).next();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNextOnRoot() {
+        SlingQuery query = $(tree).next();
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testPrevOnRoot() {
-		SlingQuery query = $(tree).prev();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testPrevOnRoot() {
+        SlingQuery query = $(tree).prev();
+        assertEmptyIterator(query.iterator());
+    }
 }
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/query/NextPrevUntilTest.java b/src/test/java/org/apache/sling/query/NextPrevUntilTest.java
index ed0b47f..43fd13e 100644
--- a/src/test/java/org/apache/sling/query/NextPrevUntilTest.java
+++ b/src/test/java/org/apache/sling/query/NextPrevUntilTest.java
@@ -28,70 +28,69 @@
 
 public class NextPrevUntilTest {
 
-	private static final String PAR_PATH = "home/java/labels/jcr:content/par";
+    private static final String PAR_PATH = "home/java/labels/jcr:content/par";
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testNextUntil() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).nextUntil("[key=unknownKey]");
-		assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1");
-	}
+    @Test
+    public void testNextUntil() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).nextUntil("[key=unknownKey]");
+        assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1");
+    }
 
-	@Test
-	public void testNextUntilResource() {
-		Resource resource = tree.getChild(PAR_PATH).getChild("configvalue_2");
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).nextUntil($(resource));
-		assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1");
-	}
+    @Test
+    public void testNextUntilResource() {
+        Resource resource = tree.getChild(PAR_PATH).getChild("configvalue_2");
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue")).nextUntil($(resource));
+        assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1");
+    }
 
-	@Test
-	public void testPrevUntil() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).prevUntil("[key=helloWorld]");
-		assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1");
-	}
+    @Test
+    public void testPrevUntil() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).prevUntil("[key=helloWorld]");
+        assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1");
+    }
 
-	@Test
-	public void testPrevUntilResource() {
-		Resource resource = tree.getChild(PAR_PATH).getChild("configvalue");
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).prevUntil($(resource));
-		assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1");
-	}
+    @Test
+    public void testPrevUntilResource() {
+        Resource resource = tree.getChild(PAR_PATH).getChild("configvalue");
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).prevUntil($(resource));
+        assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1");
+    }
 
-	@Test
-	public void testNextUntilOnLast() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).nextUntil("[key=unknownKey]");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNextUntilOnLast() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).nextUntil("[key=unknownKey]");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testPrevUntilOnFirst() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("richtext")).prevUntil("[key=helloWorld]");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testPrevUntilOnFirst() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("richtext")).prevUntil("[key=helloWorld]");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testNextUntilOnRoot() {
-		SlingQuery query = $(tree).nextUntil("cq:Page");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNextUntilOnRoot() {
+        SlingQuery query = $(tree).nextUntil("cq:Page");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testPrevUntilOnRoot() {
-		SlingQuery query = $(tree).prevUntil("cq:Page");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testPrevUntilOnRoot() {
+        SlingQuery query = $(tree).prevUntil("cq:Page");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testNextUntilInvalid() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("richtext")).nextUntil("cq:Undefined");
-		assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_0", "configvalue_1",
-				"configvalue_2");
-	}
+    @Test
+    public void testNextUntilInvalid() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("richtext")).nextUntil("cq:Undefined");
+        assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_0", "configvalue_1", "configvalue_2");
+    }
 
-	@Test
-	public void testPrevUntilInvalid() {
-		SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).prevUntil("cq:Undefined");
-		assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_0", "configvalue_1", "richtext");
-	}
+    @Test
+    public void testPrevUntilInvalid() {
+        SlingQuery query = $(tree.getChild(PAR_PATH).getChild("configvalue_2")).prevUntil("cq:Undefined");
+        assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_0", "configvalue_1", "richtext");
+    }
 }
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/query/NotTest.java b/src/test/java/org/apache/sling/query/NotTest.java
index c8d796f..53405ea 100644
--- a/src/test/java/org/apache/sling/query/NotTest.java
+++ b/src/test/java/org/apache/sling/query/NotTest.java
@@ -30,36 +30,35 @@
 
 public class NotTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testNot() {
-		SlingQuery query = $(tree).children().not("cq:Page");
-		assertResourceSetEquals(query.iterator(), "jcr:content");
-	}
+    @Test
+    public void testNot() {
+        SlingQuery query = $(tree).children().not("cq:Page");
+        assertResourceSetEquals(query.iterator(), "jcr:content");
+    }
 
-	@Test
-	public void testNotResources() {
-		SlingQuery query = $(tree).children().not(
-				$(tree.getChild("jcr:content"), tree.getChild("application")));
-		assertResourceSetEquals(query.iterator(), "home");
-	}
+    @Test
+    public void testNotResources() {
+        SlingQuery query = $(tree).children().not($(tree.getChild("jcr:content"), tree.getChild("application")));
+        assertResourceSetEquals(query.iterator(), "home");
+    }
 
-	@Test
-	public void testNotEmptyResources() {
-		SlingQuery query = $(tree).children().not(Collections.<Resource>emptyList());
-		assertResourceSetEquals(query.iterator(), "jcr:content", "application", "home");
-	}
+    @Test
+    public void testNotEmptyResources() {
+        SlingQuery query = $(tree).children().not(Collections.<Resource>emptyList());
+        assertResourceSetEquals(query.iterator(), "jcr:content", "application", "home");
+    }
 
-	@Test
-	public void testNotWithModifier() {
-		SlingQuery query = $(tree).children("cq:Page").not(":first");
-		assertResourceSetEquals(query.iterator(), "home");
-	}
+    @Test
+    public void testNotWithModifier() {
+        SlingQuery query = $(tree).children("cq:Page").not(":first");
+        assertResourceSetEquals(query.iterator(), "home");
+    }
 
-	@Test
-	public void testNotOnEmptyCollection() {
-		SlingQuery query = $(tree).children("cq:Undefined").not("cq:Page");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNotOnEmptyCollection() {
+        SlingQuery query = $(tree).children("cq:Undefined").not("cq:Page");
+        assertEmptyIterator(query.iterator());
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/ParentTest.java b/src/test/java/org/apache/sling/query/ParentTest.java
index a984e8d..e9f2295 100644
--- a/src/test/java/org/apache/sling/query/ParentTest.java
+++ b/src/test/java/org/apache/sling/query/ParentTest.java
@@ -28,17 +28,17 @@
 
 public class ParentTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testParent() {
-		SlingQuery query = $(tree.getChild("application/configuration/labels")).parent();
-		assertResourceSetEquals(query.iterator(), "configuration");
-	}
+    @Test
+    public void testParent() {
+        SlingQuery query = $(tree.getChild("application/configuration/labels")).parent();
+        assertResourceSetEquals(query.iterator(), "configuration");
+    }
 
-	@Test
-	public void testRootParent() {
-		SlingQuery query = $(tree).parent();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testRootParent() {
+        SlingQuery query = $(tree).parent();
+        assertEmptyIterator(query.iterator());
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/ParentsTest.java b/src/test/java/org/apache/sling/query/ParentsTest.java
index b0b8445..da04e85 100644
--- a/src/test/java/org/apache/sling/query/ParentsTest.java
+++ b/src/test/java/org/apache/sling/query/ParentsTest.java
@@ -28,33 +28,31 @@
 
 public class ParentsTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testParents() {
-		SlingQuery query = $(tree.getChild("application/configuration/labels/jcr:content")).parents();
-		assertResourceSetEquals(query.iterator(), "labels", "configuration", "application", "/");
-	}
+    @Test
+    public void testParents() {
+        SlingQuery query = $(tree.getChild("application/configuration/labels/jcr:content")).parents();
+        assertResourceSetEquals(query.iterator(), "labels", "configuration", "application", "/");
+    }
 
-	@Test
-	public void testFilteredParents() {
-		SlingQuery query = $(
-				tree.getChild("application/configuration/labels/jcr:content/configParsys/tab/items"))
-				.parents("cq:Page");
-		assertResourceSetEquals(query.iterator(), "labels", "configuration", "application", "/");
-	}
+    @Test
+    public void testFilteredParents() {
+        SlingQuery query = $(tree.getChild("application/configuration/labels/jcr:content/configParsys/tab/items"))
+                .parents("cq:Page");
+        assertResourceSetEquals(query.iterator(), "labels", "configuration", "application", "/");
+    }
 
-	@Test
-	public void testNoParents() {
-		SlingQuery query = $(
-				tree.getChild("application/configuration/labels/jcr:content/configParsys/tab/items"))
-				.parents("cq:Undefined");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNoParents() {
+        SlingQuery query = $(tree.getChild("application/configuration/labels/jcr:content/configParsys/tab/items"))
+                .parents("cq:Undefined");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testRootParents() {
-		SlingQuery query = $(tree).parents();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testRootParents() {
+        SlingQuery query = $(tree).parents();
+        assertEmptyIterator(query.iterator());
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/ParentsUntilTest.java b/src/test/java/org/apache/sling/query/ParentsUntilTest.java
index 80a9ca8..313b205 100644
--- a/src/test/java/org/apache/sling/query/ParentsUntilTest.java
+++ b/src/test/java/org/apache/sling/query/ParentsUntilTest.java
@@ -27,28 +27,28 @@
 
 public class ParentsUntilTest {
 
-	private static final String PAR_PATH = "application/configuration/labels/jcr:content/configParsys/tab/items";
+    private static final String PAR_PATH = "application/configuration/labels/jcr:content/configParsys/tab/items";
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testParentsUntilMatch() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).parentsUntil("cq:Page");
-		assertResourceSetEquals(query.iterator(), "jcr:content", "configParsys", "tab");
-	}
+    @Test
+    public void testParentsUntilMatch() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).parentsUntil("cq:Page");
+        assertResourceSetEquals(query.iterator(), "jcr:content", "configParsys", "tab");
+    }
 
-	@Test
-	public void testParentsUntilNoMatch() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).parentsUntil("cq:Undefined");
-		assertResourceSetEquals(query.iterator(), "application", "configuration", "labels", "jcr:content",
-				"configParsys", "tab", "/");
-	}
+    @Test
+    public void testParentsUntilNoMatch() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).parentsUntil("cq:Undefined");
+        assertResourceSetEquals(query.iterator(), "application", "configuration", "labels", "jcr:content",
+                "configParsys", "tab", "/");
+    }
 
-	@Test
-	public void testParentsUntilResource() {
-		Resource resource = tree.getChild("application/configuration");
-		SlingQuery query = $(tree.getChild(PAR_PATH)).parentsUntil($(resource));
-		assertResourceSetEquals(query.iterator(), "tab", "configParsys", "jcr:content", "labels");
-	}
+    @Test
+    public void testParentsUntilResource() {
+        Resource resource = tree.getChild("application/configuration");
+        SlingQuery query = $(tree.getChild(PAR_PATH)).parentsUntil($(resource));
+        assertResourceSetEquals(query.iterator(), "tab", "configParsys", "jcr:content", "labels");
+    }
 
 }
diff --git a/src/test/java/org/apache/sling/query/SelectorFunctionTest.java b/src/test/java/org/apache/sling/query/SelectorFunctionTest.java
index c3d0b40..1bebd8b 100644
--- a/src/test/java/org/apache/sling/query/SelectorFunctionTest.java
+++ b/src/test/java/org/apache/sling/query/SelectorFunctionTest.java
@@ -28,94 +28,92 @@
 
 public class SelectorFunctionTest {
 
-	// children with indexes:
-	// 0 - richtext
-	// 1 - configvalue
-	// 2 - configvalue_0
-	// 3 - configvalue_1
-	// 4 - configvalue_2
-	private static final String PAR_PATH = "home/java/labels/jcr:content/par";
+    // children with indexes:
+    // 0 - richtext
+    // 1 - configvalue
+    // 2 - configvalue_0
+    // 3 - configvalue_1
+    // 4 - configvalue_2
+    private static final String PAR_PATH = "home/java/labels/jcr:content/par";
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testEq() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children(":eq(2)");
-		assertResourceSetEquals(query.iterator(), "configvalue_0");
-	}
+    @Test
+    public void testEq() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children(":eq(2)");
+        assertResourceSetEquals(query.iterator(), "configvalue_0");
+    }
 
-	@Test
-	public void testFirst() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children(":first");
-		assertResourceSetEquals(query.iterator(), "richtext");
-	}
+    @Test
+    public void testFirst() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children(":first");
+        assertResourceSetEquals(query.iterator(), "richtext");
+    }
 
-	@Test
-	public void testLast() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children(":last");
-		assertResourceSetEquals(query.iterator(), "configvalue_2");
-	}
+    @Test
+    public void testLast() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children(":last");
+        assertResourceSetEquals(query.iterator(), "configvalue_2");
+    }
 
-	@Test
-	public void testGt() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children(":gt(2)");
-		assertResourceSetEquals(query.iterator(), "configvalue_1", "configvalue_2");
-	}
+    @Test
+    public void testGt() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children(":gt(2)");
+        assertResourceSetEquals(query.iterator(), "configvalue_1", "configvalue_2");
+    }
 
-	@Test
-	public void testLt() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children(":lt(3)");
-		assertResourceSetEquals(query.iterator(), "richtext", "configvalue", "configvalue_0");
-	}
+    @Test
+    public void testLt() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children(":lt(3)");
+        assertResourceSetEquals(query.iterator(), "richtext", "configvalue", "configvalue_0");
+    }
 
-	@Test
-	public void testHas() {
-		SlingQuery query = $(tree.getChild("home/java")).searchStrategy(SearchStrategy.DFS).children(
-				":has([key=helloWorld])");
-		assertResourceSetEquals(query.iterator(), "labels");
-	}
+    @Test
+    public void testHas() {
+        SlingQuery query = $(tree.getChild("home/java")).searchStrategy(SearchStrategy.DFS)
+                .children(":has([key=helloWorld])");
+        assertResourceSetEquals(query.iterator(), "labels");
+    }
 
-	@Test
-	public void testParent() {
-		SlingQuery query = $(tree.getChild("home/java/email/jcr:content/par")).children(":parent");
-		assertResourceSetEquals(query.iterator(), "email");
-	}
+    @Test
+    public void testParent() {
+        SlingQuery query = $(tree.getChild("home/java/email/jcr:content/par")).children(":parent");
+        assertResourceSetEquals(query.iterator(), "email");
+    }
 
-	@Test
-	public void testOdd() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children(":odd");
-		assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_1");
-	}
+    @Test
+    public void testOdd() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children(":odd");
+        assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_1");
+    }
 
-	@Test
-	public void testEven() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children(":even");
-		assertResourceSetEquals(query.iterator(), "richtext", "configvalue_0", "configvalue_2");
-	}
+    @Test
+    public void testEven() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children(":even");
+        assertResourceSetEquals(query.iterator(), "richtext", "configvalue_0", "configvalue_2");
+    }
 
-	@Test
-	public void testSimpleNot() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children(":not(demo/core/components/richtext)");
-		assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_0", "configvalue_1",
-				"configvalue_2");
-	}
+    @Test
+    public void testSimpleNot() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children(":not(demo/core/components/richtext)");
+        assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_0", "configvalue_1", "configvalue_2");
+    }
 
-	@Test
-	public void testNotFirst() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children(":not(:first)");
-		assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_0", "configvalue_1",
-				"configvalue_2");
-	}
+    @Test
+    public void testNotFirst() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children(":not(:first)");
+        assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_0", "configvalue_1", "configvalue_2");
+    }
 
-	@Test
-	public void testNotLast() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children(":not(:last)");
-		assertResourceSetEquals(query.iterator(), "richtext", "configvalue", "configvalue_0", "configvalue_1");
-	}
+    @Test
+    public void testNotLast() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children(":not(:last)");
+        assertResourceSetEquals(query.iterator(), "richtext", "configvalue", "configvalue_0", "configvalue_1");
+    }
 
-	@Test
-	public void testComplexNot() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children(":not(:first):not(:last)");
-		assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_0", "configvalue_1");
-	}
+    @Test
+    public void testComplexNot() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children(":not(:first):not(:last)");
+        assertResourceSetEquals(query.iterator(), "configvalue", "configvalue_0", "configvalue_1");
+    }
 }
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/query/SiblingsTest.java b/src/test/java/org/apache/sling/query/SiblingsTest.java
index fe3092b..1a0e94a 100644
--- a/src/test/java/org/apache/sling/query/SiblingsTest.java
+++ b/src/test/java/org/apache/sling/query/SiblingsTest.java
@@ -28,29 +28,29 @@
 
 public class SiblingsTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testSiblings() {
-		SlingQuery query = $(tree.getChild("application")).siblings();
-		assertResourceSetEquals(query.iterator(), "jcr:content", "application", "home");
-	}
+    @Test
+    public void testSiblings() {
+        SlingQuery query = $(tree.getChild("application")).siblings();
+        assertResourceSetEquals(query.iterator(), "jcr:content", "application", "home");
+    }
 
-	@Test
-	public void testFilteredChildren() {
-		SlingQuery query = $(tree.getChild("application")).siblings("cq:Page");
-		assertResourceSetEquals(query.iterator(), "application", "home");
-	}
+    @Test
+    public void testFilteredChildren() {
+        SlingQuery query = $(tree.getChild("application")).siblings("cq:Page");
+        assertResourceSetEquals(query.iterator(), "application", "home");
+    }
 
-	@Test
-	public void testNoSiblings() {
-		SlingQuery query = $(tree.getChild("application")).siblings("cq:Undefined");
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testNoSiblings() {
+        SlingQuery query = $(tree.getChild("application")).siblings("cq:Undefined");
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testRootSiblings() {
-		SlingQuery query = $(tree).siblings();
-		assertResourceSetEquals(query.iterator(), "/");
-	}
+    @Test
+    public void testRootSiblings() {
+        SlingQuery query = $(tree).siblings();
+        assertResourceSetEquals(query.iterator(), "/");
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/SliceTest.java b/src/test/java/org/apache/sling/query/SliceTest.java
index 692b4ee..025eadd 100644
--- a/src/test/java/org/apache/sling/query/SliceTest.java
+++ b/src/test/java/org/apache/sling/query/SliceTest.java
@@ -28,78 +28,78 @@
 
 public class SliceTest {
 
-	// children with indexes:
-	// 0 - richtext
-	// 1 - configvalue
-	// 2 - configvalue_0
-	// 3 - configvalue_1
-	// 4 - configvalue_2
-	private static final String PAR_PATH = "home/java/labels/jcr:content/par";
+    // children with indexes:
+    // 0 - richtext
+    // 1 - configvalue
+    // 2 - configvalue_0
+    // 3 - configvalue_1
+    // 4 - configvalue_2
+    private static final String PAR_PATH = "home/java/labels/jcr:content/par";
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testSlice() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children().slice(2, 4);
-		assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1", "configvalue_2");
-	}
+    @Test
+    public void testSlice() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children().slice(2, 4);
+        assertResourceSetEquals(query.iterator(), "configvalue_0", "configvalue_1", "configvalue_2");
+    }
 
-	@Test
-	public void testSliceOne() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children().slice(2, 2);
-		assertResourceSetEquals(query.iterator(), "configvalue_0");
-	}
+    @Test
+    public void testSliceOne() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children().slice(2, 2);
+        assertResourceSetEquals(query.iterator(), "configvalue_0");
+    }
 
-	@Test
-	public void testEq() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children().eq(2);
-		assertResourceSetEquals(query.iterator(), "configvalue_0");
-	}
+    @Test
+    public void testEq() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children().eq(2);
+        assertResourceSetEquals(query.iterator(), "configvalue_0");
+    }
 
-	@Test
-	public void testEqOnEmpty() {
-		SlingQuery query = $(tree).children("cq:Undefined").eq(0);
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testEqOnEmpty() {
+        SlingQuery query = $(tree).children("cq:Undefined").eq(0);
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testFirst() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children().first();
-		assertResourceSetEquals(query.iterator(), "richtext");
-	}
+    @Test
+    public void testFirst() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children().first();
+        assertResourceSetEquals(query.iterator(), "richtext");
+    }
 
-	@Test
-	public void testFirstOnEmpty() {
-		SlingQuery query = $(tree).children("cq:Undefined").first();
-		assertEmptyIterator(query.iterator());
-	}
+    @Test
+    public void testFirstOnEmpty() {
+        SlingQuery query = $(tree).children("cq:Undefined").first();
+        assertEmptyIterator(query.iterator());
+    }
 
-	@Test
-	public void testSliceAll() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children().slice(0, 4);
-		assertResourceSetEquals(query.iterator(), "richtext", "configvalue", "configvalue_0",
-				"configvalue_1", "configvalue_2");
-	}
+    @Test
+    public void testSliceAll() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children().slice(0, 4);
+        assertResourceSetEquals(query.iterator(), "richtext", "configvalue", "configvalue_0", "configvalue_1",
+                "configvalue_2");
+    }
 
-	@Test
-	public void testSliceAllBigTo() {
-		SlingQuery query = $(tree.getChild(PAR_PATH)).children().slice(0, 10);
-		assertResourceSetEquals(query.iterator(), "richtext", "configvalue", "configvalue_0",
-				"configvalue_1", "configvalue_2");
-	}
+    @Test
+    public void testSliceAllBigTo() {
+        SlingQuery query = $(tree.getChild(PAR_PATH)).children().slice(0, 10);
+        assertResourceSetEquals(query.iterator(), "richtext", "configvalue", "configvalue_0", "configvalue_1",
+                "configvalue_2");
+    }
 
-	@Test(expected = IndexOutOfBoundsException.class)
-	public void testSliceNegativeFrom() {
-		$(tree.getChild(PAR_PATH)).children().slice(-1);
-	}
+    @Test(expected = IndexOutOfBoundsException.class)
+    public void testSliceNegativeFrom() {
+        $(tree.getChild(PAR_PATH)).children().slice(-1);
+    }
 
-	@Test(expected = IndexOutOfBoundsException.class)
-	public void testSliceNegativeFrom2() {
-		$(tree.getChild(PAR_PATH)).children().slice(-1, 2);
-	}
+    @Test(expected = IndexOutOfBoundsException.class)
+    public void testSliceNegativeFrom2() {
+        $(tree.getChild(PAR_PATH)).children().slice(-1, 2);
+    }
 
-	@Test(expected = IllegalArgumentException.class)
-	public void testSliceFromGreaterThanTo() {
-		$(tree.getChild(PAR_PATH)).children().slice(2, 1);
-	}
+    @Test(expected = IllegalArgumentException.class)
+    public void testSliceFromGreaterThanTo() {
+        $(tree.getChild(PAR_PATH)).children().slice(2, 1);
+    }
 }
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/query/TestUtils.java b/src/test/java/org/apache/sling/query/TestUtils.java
index 7b68afa..52dc18f 100644
--- a/src/test/java/org/apache/sling/query/TestUtils.java
+++ b/src/test/java/org/apache/sling/query/TestUtils.java
@@ -34,63 +34,62 @@
 import org.junit.Assert;
 
 public final class TestUtils {
-	private TestUtils() {
-	}
+    private TestUtils() {
+    }
 
-	public static Resource getTree() {
-		InputStream jsonStream = TestUtils.class.getClassLoader().getResourceAsStream("sample_tree.json");
-		try {
-			Resource resource = JsonToResource.parse(jsonStream);
-			jsonStream.close();
-			return resource;
-		} catch (IOException e) {
-			return null;
-		}
-	}
+    public static Resource getTree() {
+        InputStream jsonStream = TestUtils.class.getClassLoader().getResourceAsStream("sample_tree.json");
+        try {
+            Resource resource = JsonToResource.parse(jsonStream);
+            jsonStream.close();
+            return resource;
+        } catch (IOException e) {
+            return null;
+        }
+    }
 
-	public static <T> List<T> iteratorToList(Iterator<T> iterator) {
-		List<T> list = new ArrayList<T>();
-		while (iterator.hasNext()) {
-			list.add(iterator.next());
-		}
-		return list;
-	}
+    public static <T> List<T> iteratorToList(Iterator<T> iterator) {
+        List<T> list = new ArrayList<T>();
+        while (iterator.hasNext()) {
+            list.add(iterator.next());
+        }
+        return list;
+    }
 
-	public static <T> List<Option<T>> optionList(List<T> list) {
-		List<Option<T>> result = new ArrayList<Option<T>>();
-		int index = 0;
-		for (T element : list) {
-			result.add(Option.of(element, index++));
-		}
-		return result;
-	}
+    public static <T> List<Option<T>> optionList(List<T> list) {
+        List<Option<T>> result = new ArrayList<Option<T>>();
+        int index = 0;
+        for (T element : list) {
+            result.add(Option.of(element, index++));
+        }
+        return result;
+    }
 
-	public static void assertEmptyIterator(Iterator<?> iterator) {
-		if (iterator.hasNext()) {
-			Assert.fail(String.format("Iterator should be empty, but %s is returned", iterator.next()
-					.toString()));
-		}
-	}
+    public static void assertEmptyIterator(Iterator<?> iterator) {
+        if (iterator.hasNext()) {
+            Assert.fail(String.format("Iterator should be empty, but %s is returned", iterator.next().toString()));
+        }
+    }
 
-	public static void assertResourceSetEquals(Iterator<Resource> iterator, String... names) {
-		Set<String> expectedSet = new LinkedHashSet<String>(Arrays.asList(names));
-		Set<String> actualSet = new LinkedHashSet<String>(getResourceNames(iterator));
-		Assert.assertEquals(expectedSet, actualSet);
-	}
+    public static void assertResourceSetEquals(Iterator<Resource> iterator, String... names) {
+        Set<String> expectedSet = new LinkedHashSet<String>(Arrays.asList(names));
+        Set<String> actualSet = new LinkedHashSet<String>(getResourceNames(iterator));
+        Assert.assertEquals(expectedSet, actualSet);
+    }
 
-	public static void assertResourceListEquals(Iterator<Resource> iterator, String... names) {
-		Assert.assertEquals(Arrays.asList(names), getResourceNames(iterator));
-	}
+    public static void assertResourceListEquals(Iterator<Resource> iterator, String... names) {
+        Assert.assertEquals(Arrays.asList(names), getResourceNames(iterator));
+    }
 
-	public static List<String> l(String... args) {
-		return Arrays.asList(args);
-	}
+    public static List<String> l(String... args) {
+        return Arrays.asList(args);
+    }
 
-	private static List<String> getResourceNames(Iterator<Resource> iterator) {
-		List<String> resourceNames = new ArrayList<String>();
-		while (iterator.hasNext()) {
-			resourceNames.add(iterator.next().getName());
-		}
-		return resourceNames;
-	}
+    private static List<String> getResourceNames(Iterator<Resource> iterator) {
+        List<String> resourceNames = new ArrayList<String>();
+        while (iterator.hasNext()) {
+            resourceNames.add(iterator.next().getName());
+        }
+        return resourceNames;
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/UniqueTest.java b/src/test/java/org/apache/sling/query/UniqueTest.java
index 1c58674..c53a8a3 100644
--- a/src/test/java/org/apache/sling/query/UniqueTest.java
+++ b/src/test/java/org/apache/sling/query/UniqueTest.java
@@ -27,15 +27,15 @@
 
 public class UniqueTest {
 
-	private Resource tree = TestUtils.getTree();
+    private Resource tree = TestUtils.getTree();
 
-	@Test
-	public void testUnique() {
-		Resource r1 = tree.getChild("home");
-		Resource r2 = tree.getChild("application");
-		Resource r3 = tree.getChild("home/java");
+    @Test
+    public void testUnique() {
+        Resource r1 = tree.getChild("home");
+        Resource r2 = tree.getChild("application");
+        Resource r3 = tree.getChild("home/java");
 
-		SlingQuery query = $(r1, r1, r1, r2, r2, r3, r3, r3, r1).unique();
-		assertResourceListEquals(query.iterator(), "home", "application", "java");
-	}
+        SlingQuery query = $(r1, r1, r1, r2, r2, r3, r3, r3, r1).unique();
+        assertResourceListEquals(query.iterator(), "home", "application", "java");
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/impl/iterator/ReverseTest.java b/src/test/java/org/apache/sling/query/impl/iterator/ReverseTest.java
index 9890aae..0e1808d 100644
--- a/src/test/java/org/apache/sling/query/impl/iterator/ReverseTest.java
+++ b/src/test/java/org/apache/sling/query/impl/iterator/ReverseTest.java
@@ -35,19 +35,19 @@
 
 public class ReverseTest {
 
-	@Test
-	public void testReverse() {
-		test(l("a", "b", "c", "d", "e"), l(null, null, null, null, null), new IdentityFunction<String>());
-		test(l("a", "b", "c", "d", "e"), l("a", null, null, null, null), new SliceFunction<String>(1));
-		test(l("a", "b", "c", "d", "e"), l(null, null, null, "d", "e"), new SliceFunction<String>(0, 2));
-	}
+    @Test
+    public void testReverse() {
+        test(l("a", "b", "c", "d", "e"), l(null, null, null, null, null), new IdentityFunction<String>());
+        test(l("a", "b", "c", "d", "e"), l("a", null, null, null, null), new SliceFunction<String>(1));
+        test(l("a", "b", "c", "d", "e"), l(null, null, null, "d", "e"), new SliceFunction<String>(0, 2));
+    }
 
-	private static <T> void test(List<T> input, List<T> output, IteratorToIteratorFunction<T> function) {
-		List<Option<T>> optionInput = TestUtils.optionList(input);
-		List<Option<T>> expectedOutput = TestUtils.optionList(output);
-		Iterator<Option<T>> actualOutputIterator = new ReverseIterator<T>(function, optionInput.iterator());
-		List<Option<T>> actualOutput = TestUtils.iteratorToList(actualOutputIterator);
-		Assert.assertEquals(expectedOutput, actualOutput);
-	}
+    private static <T> void test(List<T> input, List<T> output, IteratorToIteratorFunction<T> function) {
+        List<Option<T>> optionInput = TestUtils.optionList(input);
+        List<Option<T>> expectedOutput = TestUtils.optionList(output);
+        Iterator<Option<T>> actualOutputIterator = new ReverseIterator<T>(function, optionInput.iterator());
+        List<Option<T>> actualOutput = TestUtils.iteratorToList(actualOutputIterator);
+        Assert.assertEquals(expectedOutput, actualOutput);
+    }
 
 }
diff --git a/src/test/java/org/apache/sling/query/impl/iterator/SuppTest.java b/src/test/java/org/apache/sling/query/impl/iterator/SuppTest.java
index ef0c556..031605e 100644
--- a/src/test/java/org/apache/sling/query/impl/iterator/SuppTest.java
+++ b/src/test/java/org/apache/sling/query/impl/iterator/SuppTest.java
@@ -38,99 +38,99 @@
 
 public class SuppTest {
 
-	@Test
-	public void testIdentity() {
-		test(l("a", "b", "c", "d", "e"), l("a", "b", "c", "d", "e"), new IdentityFunction<String>());
-	}
+    @Test
+    public void testIdentity() {
+        test(l("a", "b", "c", "d", "e"), l("a", "b", "c", "d", "e"), new IdentityFunction<String>());
+    }
 
-	@Test
-	public void testNoFirst() {
-		test(l("a", "b", "c", "d", "e"), l(null, "b", "c", "d", "e"), new SliceFunction<String>(1));
-	}
+    @Test
+    public void testNoFirst() {
+        test(l("a", "b", "c", "d", "e"), l(null, "b", "c", "d", "e"), new SliceFunction<String>(1));
+    }
 
-	@Test
-	public void testNoSecond() {
-		testExpanding(l("a", "---"), l("a"));
-	}
+    @Test
+    public void testNoSecond() {
+        testExpanding(l("a", "---"), l("a"));
+    }
 
-	@Test
-	public void testNoTwoFirst() {
-		test(l("a", "b", "c", "d", "e"), l(null, null, "c", "d", "e"), new SliceFunction<String>(2));
-	}
+    @Test
+    public void testNoTwoFirst() {
+        test(l("a", "b", "c", "d", "e"), l(null, null, "c", "d", "e"), new SliceFunction<String>(2));
+    }
 
-	@Test
-	public void testNoLast() {
-		test(l("a", "b", "c", "d", "e"), l("a", "b", "c", "d"), new SliceFunction<String>(0, 3));
-	}
+    @Test
+    public void testNoLast() {
+        test(l("a", "b", "c", "d", "e"), l("a", "b", "c", "d"), new SliceFunction<String>(0, 3));
+    }
 
-	@Test
-	public void testNoTwoLast() {
-		test(l("a", "b", "c", "d", "e"), l("a", "b", "c"), new SliceFunction<String>(0, 2));
-	}
+    @Test
+    public void testNoTwoLast() {
+        test(l("a", "b", "c", "d", "e"), l("a", "b", "c"), new SliceFunction<String>(0, 2));
+    }
 
-	@Test
-	public void testJustFirst() {
-		test(l("a", "b", "c", "d", "e"), l("a"), new SliceFunction<String>(0, 0));
-	}
+    @Test
+    public void testJustFirst() {
+        test(l("a", "b", "c", "d", "e"), l("a"), new SliceFunction<String>(0, 0));
+    }
 
-	@Test
-	public void testExpandFirst() {
-		testExpanding(l("+", "b", "c", "d", "e"), l("+", "b", "c", "d", "e"));
-	}
+    @Test
+    public void testExpandFirst() {
+        testExpanding(l("+", "b", "c", "d", "e"), l("+", "b", "c", "d", "e"));
+    }
 
-	@Test
-	public void testExpandMiddle() {
-		testExpanding(l("a", "b", "+", "d", "e"), l("a", "b", "+", "d", "e"));
-	}
+    @Test
+    public void testExpandMiddle() {
+        testExpanding(l("a", "b", "+", "d", "e"), l("a", "b", "+", "d", "e"));
+    }
 
-	@Test
-	public void testExpandLast() {
-		testExpanding(l("a", "b", "c", "d", "+"), l("a", "b", "c", "d", "+"));
-	}
+    @Test
+    public void testExpandLast() {
+        testExpanding(l("a", "b", "c", "d", "+"), l("a", "b", "c", "d", "+"));
+    }
 
-	@Test
-	public void testRemoveFirst() {
-		testExpanding(l("-", "b", "c", "d", "e"), l(null, "b", "c", "d", "e"));
-		testExpanding(l("---", "b", "c", "d", "e"), l(null, "b", "c", "d", "e"));
-	}
+    @Test
+    public void testRemoveFirst() {
+        testExpanding(l("-", "b", "c", "d", "e"), l(null, "b", "c", "d", "e"));
+        testExpanding(l("---", "b", "c", "d", "e"), l(null, "b", "c", "d", "e"));
+    }
 
-	@Test
-	public void testRemoveMiddle() {
-		testExpanding(l("a", "b", "-", "d", "e"), l("a", "b", null, "d", "e"));
-		testExpanding(l("a", "b", "---", "d", "e"), l("a", "b", null, "d", "e"));
-	}
+    @Test
+    public void testRemoveMiddle() {
+        testExpanding(l("a", "b", "-", "d", "e"), l("a", "b", null, "d", "e"));
+        testExpanding(l("a", "b", "---", "d", "e"), l("a", "b", null, "d", "e"));
+    }
 
-	@Test
-	public void testRemoveLast() {
-		testExpanding(l("a", "b", "c", "d", "-"), l("a", "b", "c", "d"));
-		testExpanding(l("a", "b", "c", "d", "---"), l("a", "b", "c", "d"));
-	}
+    @Test
+    public void testRemoveLast() {
+        testExpanding(l("a", "b", "c", "d", "-"), l("a", "b", "c", "d"));
+        testExpanding(l("a", "b", "c", "d", "---"), l("a", "b", "c", "d"));
+    }
 
-	private static void testExpanding(List<String> input, List<String> output) {
-		test(input, output, EXPANDING_FUNCTION);
-	}
+    private static void testExpanding(List<String> input, List<String> output) {
+        test(input, output, EXPANDING_FUNCTION);
+    }
 
-	private static <T> void test(List<T> input, List<T> output, IteratorToIteratorFunction<T> function) {
-		List<Option<T>> optionInput = TestUtils.optionList(input);
-		List<Option<T>> expectedOutput = TestUtils.optionList(output);
-		Iterator<Option<T>> actualOutputIterator = new SuppIterator<T>(optionInput, function);
-		List<Option<T>> actualOutput = TestUtils.iteratorToList(actualOutputIterator);
-		Assert.assertEquals(expectedOutput, actualOutput);
-	}
+    private static <T> void test(List<T> input, List<T> output, IteratorToIteratorFunction<T> function) {
+        List<Option<T>> optionInput = TestUtils.optionList(input);
+        List<Option<T>> expectedOutput = TestUtils.optionList(output);
+        Iterator<Option<T>> actualOutputIterator = new SuppIterator<T>(optionInput, function);
+        List<Option<T>> actualOutput = TestUtils.iteratorToList(actualOutputIterator);
+        Assert.assertEquals(expectedOutput, actualOutput);
+    }
 
-	private static final IteratorToIteratorFunctionWrapper<String> EXPANDING_FUNCTION = new IteratorToIteratorFunctionWrapper<String>(
-			new ElementToIteratorFunction<String>() {
-				@Override
-				public Iterator<String> apply(String input) {
-					if ("+".equals(input)) {
-						return Arrays.asList("a", "b", "c").iterator();
-					} else if ("-".equals(input)) {
-						return Arrays.<String> asList().iterator();
-					} else if ("---".equals(input)) {
-						return Arrays.<String> asList(null, null, null).iterator();
-					} else {
-						return Arrays.asList(input).iterator();
-					}
-				}
-			});
+    private static final IteratorToIteratorFunctionWrapper<String> EXPANDING_FUNCTION = new IteratorToIteratorFunctionWrapper<String>(
+            new ElementToIteratorFunction<String>() {
+                @Override
+                public Iterator<String> apply(String input) {
+                    if ("+".equals(input)) {
+                        return Arrays.asList("a", "b", "c").iterator();
+                    } else if ("-".equals(input)) {
+                        return Arrays.<String>asList().iterator();
+                    } else if ("---".equals(input)) {
+                        return Arrays.<String>asList(null, null, null).iterator();
+                    } else {
+                        return Arrays.asList(input).iterator();
+                    }
+                }
+            });
 }
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/query/impl/selector/parser/JcrMultiSelectorTest.java b/src/test/java/org/apache/sling/query/impl/selector/parser/JcrMultiSelectorTest.java
index 7759100..4c1c7c5 100644
--- a/src/test/java/org/apache/sling/query/impl/selector/parser/JcrMultiSelectorTest.java
+++ b/src/test/java/org/apache/sling/query/impl/selector/parser/JcrMultiSelectorTest.java
@@ -25,34 +25,34 @@
 import org.junit.Test;
 
 public class JcrMultiSelectorTest {
-	@Test
-	public void typeHierarchy() {
-		String selector = "cq:Page, cq:Type";
-		String jcrQuery = "SELECT * FROM [cq:Page] AS s";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    @Test
+    public void typeHierarchy() {
+        String selector = "cq:Page, cq:Type";
+        String jcrQuery = "SELECT * FROM [cq:Page] AS s";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
 
-		selector = "cq:Type, cq:Page";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+        selector = "cq:Type, cq:Page";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void incompatibleTypes() {
-		final String selector = "jcr:someType, cq:Type";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void incompatibleTypes() {
+        final String selector = "jcr:someType, cq:Type";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void attributes() {
-		final String selector = "[x=y][y=z], [a=b][c=d]";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE ((s.[x] = 'y' AND s.[y] = 'z') OR (s.[a] = 'b' AND s.[c] = 'd'))";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void attributes() {
+        final String selector = "[x=y][y=z], [a=b][c=d]";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE ((s.[x] = 'y' AND s.[y] = 'z') OR (s.[a] = 'b' AND s.[c] = 'd'))";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void attributesWithPath() {
-		final String selector = "[x=y][y=z], [a=b][c=d]";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE (ISDESCENDANTNODE('/content') AND ((s.[x] = 'y' AND s.[y] = 'z') OR (s.[a] = 'b' AND s.[c] = 'd')))";
-		Assert.assertEquals(jcrQuery, parse(selector, "/content"));
-	}
+    @Test
+    public void attributesWithPath() {
+        final String selector = "[x=y][y=z], [a=b][c=d]";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE (ISDESCENDANTNODE('/content') AND ((s.[x] = 'y' AND s.[y] = 'z') OR (s.[a] = 'b' AND s.[c] = 'd')))";
+        Assert.assertEquals(jcrQuery, parse(selector, "/content"));
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/impl/selector/parser/JcrSelectorTest.java b/src/test/java/org/apache/sling/query/impl/selector/parser/JcrSelectorTest.java
index dea4fd5..b8a53e4 100644
--- a/src/test/java/org/apache/sling/query/impl/selector/parser/JcrSelectorTest.java
+++ b/src/test/java/org/apache/sling/query/impl/selector/parser/JcrSelectorTest.java
@@ -30,107 +30,107 @@
 import org.junit.Test;
 
 public class JcrSelectorTest {
-	@Test
-	public void parseResourceType() {
-		final String selector = "foundation/components/parsys";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[sling:resourceType] = 'foundation/components/parsys'";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void parseResourceType() {
+        final String selector = "foundation/components/parsys";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[sling:resourceType] = 'foundation/components/parsys'";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void parsePrimaryType() {
-		final String selector = "cq:Page";
-		final String jcrQuery = "SELECT * FROM [cq:Page] AS s";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void parsePrimaryType() {
+        final String selector = "cq:Page";
+        final String jcrQuery = "SELECT * FROM [cq:Page] AS s";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void parsePath() {
-		final String selector = "cq:Page";
-		final String jcrQuery = "SELECT * FROM [cq:Page] AS s WHERE ISDESCENDANTNODE('/content')";
-		Assert.assertEquals(jcrQuery, parse(selector, "/content"));
-	}
+    @Test
+    public void parsePath() {
+        final String selector = "cq:Page";
+        final String jcrQuery = "SELECT * FROM [cq:Page] AS s WHERE ISDESCENDANTNODE('/content')";
+        Assert.assertEquals(jcrQuery, parse(selector, "/content"));
+    }
 
-	@Test
-	public void parseEmptySelector() {
-		final String selector = "";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void parseEmptySelector() {
+        final String selector = "";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void parseEquals() {
-		final String selector = "[key1=value]";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] = 'value'";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void parseEquals() {
+        final String selector = "[key1=value]";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] = 'value'";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void parseNotEquals() {
-		final String selector = "[key1!=value]";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] != 'value'";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void parseNotEquals() {
+        final String selector = "[key1!=value]";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] != 'value'";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void parseContains() {
-		final String selector = "[key1*=value]";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] LIKE '%value%'";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void parseContains() {
+        final String selector = "[key1*=value]";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] LIKE '%value%'";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void parseContainsWord() {
-		final String selector = "[key1~=value]";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] LIKE '%value%'";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void parseContainsWord() {
+        final String selector = "[key1~=value]";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] LIKE '%value%'";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void parseStartsWith() {
-		final String selector = "[key1^=value]";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] LIKE 'value%'";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void parseStartsWith() {
+        final String selector = "[key1^=value]";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] LIKE 'value%'";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void parseEndsWith() {
-		final String selector = "[key1$=value]";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] LIKE '%value'";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void parseEndsWith() {
+        final String selector = "[key1$=value]";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] LIKE '%value'";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void parseEscapedValue() {
-		final String selector = "[key1=value'123]";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] = 'value''123'";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void parseEscapedValue() {
+        final String selector = "[key1=value'123]";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE s.[key1] = 'value''123'";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void parseMultipleConditions() {
-		final String selector = "[key1=value1][key2=value2]";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE (s.[key1] = 'value1' AND s.[key2] = 'value2')";
-		Assert.assertEquals(jcrQuery, parse(selector, "/"));
-	}
+    @Test
+    public void parseMultipleConditions() {
+        final String selector = "[key1=value1][key2=value2]";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE (s.[key1] = 'value1' AND s.[key2] = 'value2')";
+        Assert.assertEquals(jcrQuery, parse(selector, "/"));
+    }
 
-	@Test
-	public void parseMultipleConditionsWithResourceTypeAndPath() {
-		final String selector = "foundation/components/parsys[key1=value1][key2=value2]";
-		final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE (ISDESCENDANTNODE('/content') AND (s.[sling:resourceType] = 'foundation/components/parsys' AND s.[key1] = 'value1' AND s.[key2] = 'value2'))";
-		Assert.assertEquals(jcrQuery, parse(selector, "/content"));
-	}
+    @Test
+    public void parseMultipleConditionsWithResourceTypeAndPath() {
+        final String selector = "foundation/components/parsys[key1=value1][key2=value2]";
+        final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE (ISDESCENDANTNODE('/content') AND (s.[sling:resourceType] = 'foundation/components/parsys' AND s.[key1] = 'value1' AND s.[key2] = 'value2'))";
+        Assert.assertEquals(jcrQuery, parse(selector, "/content"));
+    }
 
-	@Test
-	public void parseAttributeWithSubresource() {
-		final String selector = "cq:Page[jcr:content/cq:template=xyz]";
-		final String jcrQuery = "SELECT * FROM [cq:Page] AS s WHERE ISDESCENDANTNODE('/content')";
-		Assert.assertEquals(jcrQuery, parse(selector, "/content"));
-	}
+    @Test
+    public void parseAttributeWithSubresource() {
+        final String selector = "cq:Page[jcr:content/cq:template=xyz]";
+        final String jcrQuery = "SELECT * FROM [cq:Page] AS s WHERE ISDESCENDANTNODE('/content')";
+        Assert.assertEquals(jcrQuery, parse(selector, "/content"));
+    }
 
-	static String parse(String selector, String root) {
-		List<Selector> selectors = SelectorParser.parse(selector);
-		List<SelectorSegment> segments = SelectorParser.getFirstSegmentFromEachSelector(selectors);
-		return new JcrQueryBuilder(new MockTypeResolver()).buildQuery(segments, root);
-	}
+    static String parse(String selector, String root) {
+        List<Selector> selectors = SelectorParser.parse(selector);
+        List<SelectorSegment> segments = SelectorParser.getFirstSegmentFromEachSelector(selectors);
+        return new JcrQueryBuilder(new MockTypeResolver()).buildQuery(segments, root);
+    }
 }
diff --git a/src/test/java/org/apache/sling/query/impl/selector/parser/SelectorTest.java b/src/test/java/org/apache/sling/query/impl/selector/parser/SelectorTest.java
index b363a49..030b0c3 100644
--- a/src/test/java/org/apache/sling/query/impl/selector/parser/SelectorTest.java
+++ b/src/test/java/org/apache/sling/query/impl/selector/parser/SelectorTest.java
@@ -31,235 +31,235 @@
 import org.junit.Test;
 
 public class SelectorTest {
-	@Test
-	public void parseResourceType() {
-		SelectorSegment selector = getFirstSegment("my/resource/type");
-		Assert.assertEquals(selector.getType(), "my/resource/type");
-	}
+    @Test
+    public void parseResourceType() {
+        SelectorSegment selector = getFirstSegment("my/resource/type");
+        Assert.assertEquals(selector.getType(), "my/resource/type");
+    }
 
-	@Test
-	public void parseProperty() {
-		SelectorSegment selector = getFirstSegment("[key=value]");
-		Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
-	}
+    @Test
+    public void parseProperty() {
+        SelectorSegment selector = getFirstSegment("[key=value]");
+        Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
+    }
 
-	@Test
-	public void parseProperties() {
-		SelectorSegment selector = getFirstSegment("[key=value][key2=value2]");
-		Assert.assertEquals(Arrays.asList(pp("key", "value"), pp("key2", "value2")), selector.getAttributes());
-	}
+    @Test
+    public void parseProperties() {
+        SelectorSegment selector = getFirstSegment("[key=value][key2=value2]");
+        Assert.assertEquals(Arrays.asList(pp("key", "value"), pp("key2", "value2")), selector.getAttributes());
+    }
 
-	@Test
-	public void parseResourceTypeAndName() {
-		SelectorSegment selector = getFirstSegment("my/resource/type#some-name");
-		Assert.assertEquals("my/resource/type", selector.getType());
-		Assert.assertEquals("some-name", selector.getName());
-	}
+    @Test
+    public void parseResourceTypeAndName() {
+        SelectorSegment selector = getFirstSegment("my/resource/type#some-name");
+        Assert.assertEquals("my/resource/type", selector.getType());
+        Assert.assertEquals("some-name", selector.getName());
+    }
 
-	@Test
-	public void parseResourceTypeAndProperty() {
-		SelectorSegment selector = getFirstSegment("my/resource/type[key=value]");
-		Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
-		Assert.assertEquals("my/resource/type", selector.getType());
-	}
+    @Test
+    public void parseResourceTypeAndProperty() {
+        SelectorSegment selector = getFirstSegment("my/resource/type[key=value]");
+        Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
+        Assert.assertEquals("my/resource/type", selector.getType());
+    }
 
-	@Test
-	public void parseResourceTypeAndNameAndProperty() {
-		SelectorSegment selector = getFirstSegment("my/resource/type#some-name[key=value]");
-		Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
-		Assert.assertEquals("my/resource/type", selector.getType());
-		Assert.assertEquals("some-name", selector.getName());
-	}
+    @Test
+    public void parseResourceTypeAndNameAndProperty() {
+        SelectorSegment selector = getFirstSegment("my/resource/type#some-name[key=value]");
+        Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
+        Assert.assertEquals("my/resource/type", selector.getType());
+        Assert.assertEquals("some-name", selector.getName());
+    }
 
-	@Test
-	public void parseResourceTypeAndProperties() {
-		SelectorSegment selector = getFirstSegment("my/resource/type[key=value][key2=value2]");
-		Assert.assertEquals(Arrays.asList(pp("key", "value"), pp("key2", "value2")), selector.getAttributes());
-		Assert.assertEquals("my/resource/type", selector.getType());
-	}
+    @Test
+    public void parseResourceTypeAndProperties() {
+        SelectorSegment selector = getFirstSegment("my/resource/type[key=value][key2=value2]");
+        Assert.assertEquals(Arrays.asList(pp("key", "value"), pp("key2", "value2")), selector.getAttributes());
+        Assert.assertEquals("my/resource/type", selector.getType());
+    }
 
-	@Test
-	public void parseResourceTypeAndNameAndProperties() {
-		SelectorSegment selector = getFirstSegment("my/resource/type#some-name[key=value][key2=value2]");
-		Assert.assertEquals(Arrays.asList(pp("key", "value"), pp("key2", "value2")), selector.getAttributes());
-		Assert.assertEquals("my/resource/type", selector.getType());
-		Assert.assertEquals("some-name", selector.getName());
-	}
+    @Test
+    public void parseResourceTypeAndNameAndProperties() {
+        SelectorSegment selector = getFirstSegment("my/resource/type#some-name[key=value][key2=value2]");
+        Assert.assertEquals(Arrays.asList(pp("key", "value"), pp("key2", "value2")), selector.getAttributes());
+        Assert.assertEquals("my/resource/type", selector.getType());
+        Assert.assertEquals("some-name", selector.getName());
+    }
 
-	@Test
-	public void parseFunction() {
-		SelectorSegment selector = getFirstSegment(":eq(12)");
-		Assert.assertEquals(Arrays.asList(f("eq", "12")), selector.getModifiers());
-	}
+    @Test
+    public void parseFunction() {
+        SelectorSegment selector = getFirstSegment(":eq(12)");
+        Assert.assertEquals(Arrays.asList(f("eq", "12")), selector.getModifiers());
+    }
 
-	@Test
-	public void parseNameAndFunction() {
-		SelectorSegment selector = getFirstSegment("#some-name:eq(12)");
-		Assert.assertEquals("some-name", selector.getName());
-		Assert.assertEquals(Arrays.asList(f("eq", "12")), selector.getModifiers());
-	}
+    @Test
+    public void parseNameAndFunction() {
+        SelectorSegment selector = getFirstSegment("#some-name:eq(12)");
+        Assert.assertEquals("some-name", selector.getName());
+        Assert.assertEquals(Arrays.asList(f("eq", "12")), selector.getModifiers());
+    }
 
-	@Test
-	public void parseEscapedNameAndFunction() {
-		SelectorSegment selector = getFirstSegment("#'jcr:content':eq(12)");
-		Assert.assertEquals("jcr:content", selector.getName());
-		Assert.assertEquals(Arrays.asList(f("eq", "12")), selector.getModifiers());
-	}
+    @Test
+    public void parseEscapedNameAndFunction() {
+        SelectorSegment selector = getFirstSegment("#'jcr:content':eq(12)");
+        Assert.assertEquals("jcr:content", selector.getName());
+        Assert.assertEquals(Arrays.asList(f("eq", "12")), selector.getModifiers());
+    }
 
-	@Test
-	public void parseFunctionWithFilter() {
-		SelectorSegment selector = getFirstSegment(":has([key=value])");
-		Assert.assertEquals(Arrays.asList(f("has", "[key=value]")), selector.getModifiers());
-	}
+    @Test
+    public void parseFunctionWithFilter() {
+        SelectorSegment selector = getFirstSegment(":has([key=value])");
+        Assert.assertEquals(Arrays.asList(f("has", "[key=value]")), selector.getModifiers());
+    }
 
-	@Test
-	public void parseNameAndFunctionWithFilter() {
-		SelectorSegment selector = getFirstSegment("#some-name:has([key=value])");
-		Assert.assertEquals(Arrays.asList(f("has", "[key=value]")), selector.getModifiers());
-		Assert.assertEquals("some-name", selector.getName());
-	}
+    @Test
+    public void parseNameAndFunctionWithFilter() {
+        SelectorSegment selector = getFirstSegment("#some-name:has([key=value])");
+        Assert.assertEquals(Arrays.asList(f("has", "[key=value]")), selector.getModifiers());
+        Assert.assertEquals("some-name", selector.getName());
+    }
 
-	@Test
-	public void parseNestedFunction() {
-		SelectorSegment selector = getFirstSegment(":not(:has(cq:Page))");
-		Assert.assertEquals(Arrays.asList(f("not", ":has(cq:Page)")), selector.getModifiers());
-	}
+    @Test
+    public void parseNestedFunction() {
+        SelectorSegment selector = getFirstSegment(":not(:has(cq:Page))");
+        Assert.assertEquals(Arrays.asList(f("not", ":has(cq:Page)")), selector.getModifiers());
+    }
 
-	@Test
-	public void parseFunctionWithoutArgument() {
-		SelectorSegment selector = getFirstSegment(":first");
-		Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
-	}
+    @Test
+    public void parseFunctionWithoutArgument() {
+        SelectorSegment selector = getFirstSegment(":first");
+        Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
+    }
 
-	@Test
-	public void parseFunctions() {
-		SelectorSegment selector = getFirstSegment(":eq(12):first");
-		Assert.assertEquals(Arrays.asList(f("eq", "12"), f("first", null)), selector.getModifiers());
-	}
+    @Test
+    public void parseFunctions() {
+        SelectorSegment selector = getFirstSegment(":eq(12):first");
+        Assert.assertEquals(Arrays.asList(f("eq", "12"), f("first", null)), selector.getModifiers());
+    }
 
-	@Test
-	public void parsePrimaryTypeAndFunction() {
-		SelectorSegment selector = getFirstSegment("cq:Page:first");
-		Assert.assertEquals("cq:Page", selector.getType());
-		Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
-	}
+    @Test
+    public void parsePrimaryTypeAndFunction() {
+        SelectorSegment selector = getFirstSegment("cq:Page:first");
+        Assert.assertEquals("cq:Page", selector.getType());
+        Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
+    }
 
-	@Test
-	public void parsePrimaryTypeAndFunctions() {
-		SelectorSegment selector = getFirstSegment("cq:Page:first:eq(12)");
-		Assert.assertEquals("cq:Page", selector.getType());
-		Assert.assertEquals(Arrays.asList(f("first", null), f("eq", "12")), selector.getModifiers());
-	}
+    @Test
+    public void parsePrimaryTypeAndFunctions() {
+        SelectorSegment selector = getFirstSegment("cq:Page:first:eq(12)");
+        Assert.assertEquals("cq:Page", selector.getType());
+        Assert.assertEquals(Arrays.asList(f("first", null), f("eq", "12")), selector.getModifiers());
+    }
 
-	@Test
-	public void parseResourceTypeAndFunction() {
-		SelectorSegment selector = getFirstSegment("my/resource/type:first");
-		Assert.assertEquals("my/resource/type", selector.getType());
-		Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
-	}
+    @Test
+    public void parseResourceTypeAndFunction() {
+        SelectorSegment selector = getFirstSegment("my/resource/type:first");
+        Assert.assertEquals("my/resource/type", selector.getType());
+        Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
+    }
 
-	@Test
-	public void parseResourceTypeAndNameAndFunction() {
-		SelectorSegment selector = getFirstSegment("my/resource/type#some-name:first");
-		Assert.assertEquals("my/resource/type", selector.getType());
-		Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
-		Assert.assertEquals("some-name", selector.getName());
-	}
+    @Test
+    public void parseResourceTypeAndNameAndFunction() {
+        SelectorSegment selector = getFirstSegment("my/resource/type#some-name:first");
+        Assert.assertEquals("my/resource/type", selector.getType());
+        Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
+        Assert.assertEquals("some-name", selector.getName());
+    }
 
-	@Test
-	public void parseResourceTypeAndFunctions() {
-		SelectorSegment selector = getFirstSegment("my/resource/type:first:eq(12)");
-		Assert.assertEquals("my/resource/type", selector.getType());
-		Assert.assertEquals(Arrays.asList(f("first", null), f("eq", "12")), selector.getModifiers());
-	}
+    @Test
+    public void parseResourceTypeAndFunctions() {
+        SelectorSegment selector = getFirstSegment("my/resource/type:first:eq(12)");
+        Assert.assertEquals("my/resource/type", selector.getType());
+        Assert.assertEquals(Arrays.asList(f("first", null), f("eq", "12")), selector.getModifiers());
+    }
 
-	@Test
-	public void parseResourceTypeAndPropertyAndFunction() {
-		SelectorSegment selector = getFirstSegment("my/resource/type[key=value]:first");
-		Assert.assertEquals("my/resource/type", selector.getType());
-		Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
-		Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
-	}
+    @Test
+    public void parseResourceTypeAndPropertyAndFunction() {
+        SelectorSegment selector = getFirstSegment("my/resource/type[key=value]:first");
+        Assert.assertEquals("my/resource/type", selector.getType());
+        Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
+        Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
+    }
 
-	@Test
-	public void parseResourceTypeAndNameAndPropertyAndFunction() {
-		SelectorSegment selector = getFirstSegment("my/resource/type#some-name[key=value]:first");
-		Assert.assertEquals(selector.getType(), "my/resource/type");
-		Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
-		Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
-		Assert.assertEquals("some-name", selector.getName());
-	}
+    @Test
+    public void parseResourceTypeAndNameAndPropertyAndFunction() {
+        SelectorSegment selector = getFirstSegment("my/resource/type#some-name[key=value]:first");
+        Assert.assertEquals(selector.getType(), "my/resource/type");
+        Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
+        Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
+        Assert.assertEquals("some-name", selector.getName());
+    }
 
-	@Test
-	public void parseResourceTypeAndPropertiesAndFunction() {
-		SelectorSegment selector = getFirstSegment("my/resource/type[key=value][key2=value2]:first");
-		Assert.assertEquals("my/resource/type", selector.getType());
-		Assert.assertEquals(Arrays.asList(pp("key", "value"), pp("key2", "value2")), selector.getAttributes());
-		Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
-	}
+    @Test
+    public void parseResourceTypeAndPropertiesAndFunction() {
+        SelectorSegment selector = getFirstSegment("my/resource/type[key=value][key2=value2]:first");
+        Assert.assertEquals("my/resource/type", selector.getType());
+        Assert.assertEquals(Arrays.asList(pp("key", "value"), pp("key2", "value2")), selector.getAttributes());
+        Assert.assertEquals(Arrays.asList(f("first", null)), selector.getModifiers());
+    }
 
-	@Test
-	public void parseResourceTypeAndPropertyAndFunctions() {
-		SelectorSegment selector = getFirstSegment("my/resource/type[key=value]:first:eq(12)");
-		Assert.assertEquals("my/resource/type", selector.getType());
-		Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
-		Assert.assertEquals(Arrays.asList(f("first", null), f("eq", "12")), selector.getModifiers());
-	}
+    @Test
+    public void parseResourceTypeAndPropertyAndFunctions() {
+        SelectorSegment selector = getFirstSegment("my/resource/type[key=value]:first:eq(12)");
+        Assert.assertEquals("my/resource/type", selector.getType());
+        Assert.assertEquals(Arrays.asList(pp("key", "value")), selector.getAttributes());
+        Assert.assertEquals(Arrays.asList(f("first", null), f("eq", "12")), selector.getModifiers());
+    }
 
-	@Test
-	public void parseResourceTypeAndPropertiesAndFunctions() {
-		SelectorSegment selector = getFirstSegment("my/resource/type[key=value][key2=value2]:first:eq(12)");
-		Assert.assertEquals("my/resource/type", selector.getType());
-		Assert.assertEquals(Arrays.asList(pp("key", "value"), pp("key2", "value2")), selector.getAttributes());
-		Assert.assertEquals(Arrays.asList(f("first", null), f("eq", "12")), selector.getModifiers());
-	}
+    @Test
+    public void parseResourceTypeAndPropertiesAndFunctions() {
+        SelectorSegment selector = getFirstSegment("my/resource/type[key=value][key2=value2]:first:eq(12)");
+        Assert.assertEquals("my/resource/type", selector.getType());
+        Assert.assertEquals(Arrays.asList(pp("key", "value"), pp("key2", "value2")), selector.getAttributes());
+        Assert.assertEquals(Arrays.asList(f("first", null), f("eq", "12")), selector.getModifiers());
+    }
 
-	@Test
-	public void parseMultiSegments() {
-		List<SelectorSegment> segments = getSegments("cq:Page cq:Page");
-		Assert.assertEquals(getSegments("cq:Page", " ", "cq:Page"), segments);
+    @Test
+    public void parseMultiSegments() {
+        List<SelectorSegment> segments = getSegments("cq:Page cq:Page");
+        Assert.assertEquals(getSegments("cq:Page", " ", "cq:Page"), segments);
 
-		segments = getSegments("cq:Page > cq:Page");
-		Assert.assertEquals(getSegments("cq:Page", ">", "cq:Page"), segments);
+        segments = getSegments("cq:Page > cq:Page");
+        Assert.assertEquals(getSegments("cq:Page", ">", "cq:Page"), segments);
 
-		segments = getSegments("cq:Page ~ cq:Page");
-		Assert.assertEquals(getSegments("cq:Page", "~", "cq:Page"), segments);
+        segments = getSegments("cq:Page ~ cq:Page");
+        Assert.assertEquals(getSegments("cq:Page", "~", "cq:Page"), segments);
 
-		segments = getSegments("cq:Page + cq:Page");
-		Assert.assertEquals(getSegments("cq:Page", "+", "cq:Page"), segments);
+        segments = getSegments("cq:Page + cq:Page");
+        Assert.assertEquals(getSegments("cq:Page", "+", "cq:Page"), segments);
 
-		segments = getSegments("cq:Page   cq:Page2 +  cq:Page3");
-		Assert.assertEquals(getSegments("cq:Page", " ", "cq:Page2", "+", "cq:Page3"), segments);
-	}
+        segments = getSegments("cq:Page   cq:Page2 +  cq:Page3");
+        Assert.assertEquals(getSegments("cq:Page", " ", "cq:Page2", "+", "cq:Page3"), segments);
+    }
 
-	private static Attribute pp(String key, String value) {
-		return new Attribute(key, "=", value);
-	}
+    private static Attribute pp(String key, String value) {
+        return new Attribute(key, "=", value);
+    }
 
-	private static Modifier f(String functionId, String argument) {
-		return new Modifier(functionId, argument);
-	}
+    private static Modifier f(String functionId, String argument) {
+        return new Modifier(functionId, argument);
+    }
 
-	private static List<SelectorSegment> getSegments(String selector) {
-		return SelectorParser.parse(selector).get(0).getSegments();
-	}
+    private static List<SelectorSegment> getSegments(String selector) {
+        return SelectorParser.parse(selector).get(0).getSegments();
+    }
 
-	private static SelectorSegment getFirstSegment(String selector) {
-		return getSegments(selector).get(0);
-	}
+    private static SelectorSegment getFirstSegment(String selector) {
+        return getSegments(selector).get(0);
+    }
 
-	private static List<SelectorSegment> getSegments(String... segments) {
-		List<SelectorSegment> list = new ArrayList<SelectorSegment>();
-		if (segments.length > 0) {
-			list.add(getFirstSegment(segments[0]));
-		}
-		for (int i = 1; i < segments.length; i += 2) {
-			SelectorSegment parsed = getFirstSegment(segments[i + 1]);
-			char operator = segments[i].charAt(0);
-			SelectorSegment segment = new SelectorSegment(parsed.getType(), null, parsed.getAttributes(),
-					parsed.getModifiers(), operator);
-			list.add(segment);
-		}
-		return list;
-	}
+    private static List<SelectorSegment> getSegments(String... segments) {
+        List<SelectorSegment> list = new ArrayList<SelectorSegment>();
+        if (segments.length > 0) {
+            list.add(getFirstSegment(segments[0]));
+        }
+        for (int i = 1; i < segments.length; i += 2) {
+            SelectorSegment parsed = getFirstSegment(segments[i + 1]);
+            char operator = segments[i].charAt(0);
+            SelectorSegment segment = new SelectorSegment(parsed.getType(), null, parsed.getAttributes(),
+                    parsed.getModifiers(), operator);
+            list.add(segment);
+        }
+        return list;
+    }
 }
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/query/mock/MockTypeResolver.java b/src/test/java/org/apache/sling/query/mock/MockTypeResolver.java
index 0433c55..eebeec1 100644
--- a/src/test/java/org/apache/sling/query/mock/MockTypeResolver.java
+++ b/src/test/java/org/apache/sling/query/mock/MockTypeResolver.java
@@ -26,24 +26,24 @@
 
 public class MockTypeResolver implements JcrTypeResolver {
 
-	private static final List<String> TYPE_HIERARCHY = Arrays.asList("nt:base", "nt:unstructured", "cq:Page",
-			"cq:Type");
+    private static final List<String> TYPE_HIERARCHY = Arrays.asList("nt:base", "nt:unstructured", "cq:Page",
+            "cq:Type");
 
-	private static final List<String> OTHER_TYPES = Arrays.asList("jcr:otherType", "jcr:someType");
+    private static final List<String> OTHER_TYPES = Arrays.asList("jcr:otherType", "jcr:someType");
 
-	@Override
-	public boolean isJcrType(String name) {
-		return TYPE_HIERARCHY.contains(name) || OTHER_TYPES.contains(name);
-	}
+    @Override
+    public boolean isJcrType(String name) {
+        return TYPE_HIERARCHY.contains(name) || OTHER_TYPES.contains(name);
+    }
 
-	@Override
-	public boolean isSubtype(String supertype, String subtype) {
-		int i1 = TYPE_HIERARCHY.indexOf(supertype);
-		int i2 = TYPE_HIERARCHY.indexOf(subtype);
-		if (i1 == -1 || i2 == -1) {
-			return false;
-		}
-		return i1 < i2;
-	}
+    @Override
+    public boolean isSubtype(String supertype, String subtype) {
+        int i1 = TYPE_HIERARCHY.indexOf(supertype);
+        int i2 = TYPE_HIERARCHY.indexOf(subtype);
+        if (i1 == -1 || i2 == -1) {
+            return false;
+        }
+        return i1 < i2;
+    }
 
 }
diff --git a/src/test/java/org/apache/sling/query/mock/PropertyResourceMock.java b/src/test/java/org/apache/sling/query/mock/PropertyResourceMock.java
index 55380c7..68219c4 100644
--- a/src/test/java/org/apache/sling/query/mock/PropertyResourceMock.java
+++ b/src/test/java/org/apache/sling/query/mock/PropertyResourceMock.java
@@ -28,92 +28,92 @@
 
 public class PropertyResourceMock implements Resource {
 
-	private final String name;
+    private final String name;
 
-	private final Resource parent;
+    private final Resource parent;
 
-	private final String value;
+    private final String value;
 
-	private final String[] values;
+    private final String[] values;
 
-	public PropertyResourceMock(Resource parent, String name, String value) {
-		this.parent = parent;
-		this.name = name;
-		this.value = value;
-		this.values = null;
-	}
+    public PropertyResourceMock(Resource parent, String name, String value) {
+        this.parent = parent;
+        this.name = name;
+        this.value = value;
+        this.values = null;
+    }
 
-	public PropertyResourceMock(Resource parent, String name, String[] values) {
-		this.parent = parent;
-		this.name = name;
-		this.value = null;
-		this.values = values;
-	}
+    public PropertyResourceMock(Resource parent, String name, String[] values) {
+        this.parent = parent;
+        this.name = name;
+        this.value = null;
+        this.values = values;
+    }
 
-	@SuppressWarnings("unchecked")
-	@Override
-	public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
-		if (type.isAssignableFrom(String.class)) {
-			return (AdapterType) value;
-		} else if (type.isAssignableFrom(String[].class)) {
-			return (AdapterType) (value == null ? values : new String[] { value });
-		} else {
-			return null;
-		}
-	}
+    @SuppressWarnings("unchecked")
+    @Override
+    public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
+        if (type.isAssignableFrom(String.class)) {
+            return (AdapterType) value;
+        } else if (type.isAssignableFrom(String[].class)) {
+            return (AdapterType) (value == null ? values : new String[] { value });
+        } else {
+            return null;
+        }
+    }
 
-	@Override
-	public String getPath() {
-		if (parent == null) {
-			return "";
-		} else {
-			return String.format("%s/%s", parent.getPath(), name);
-		}
-	}
+    @Override
+    public String getPath() {
+        if (parent == null) {
+            return "";
+        } else {
+            return String.format("%s/%s", parent.getPath(), name);
+        }
+    }
 
-	@Override
-	public String getName() {
-		return name;
-	}
+    @Override
+    public String getName() {
+        return name;
+    }
 
-	@Override
-	public Resource getParent() {
-		return parent;
-	}
+    @Override
+    public Resource getParent() {
+        return parent;
+    }
 
-	@Override
-	public Iterator<Resource> listChildren() {
-		return Arrays.<Resource> asList().iterator();
-	}
+    @Override
+    public Iterator<Resource> listChildren() {
+        return Arrays.<Resource>asList().iterator();
+    }
 
-	@Override
-	public Resource getChild(String relPath) {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public Resource getChild(String relPath) {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public String getResourceType() {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public String getResourceType() {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public String getResourceSuperType() {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public String getResourceSuperType() {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public boolean isResourceType(String resourceType) {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public boolean isResourceType(String resourceType) {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public ResourceMetadata getResourceMetadata() {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public ResourceMetadata getResourceMetadata() {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public ResourceResolver getResourceResolver() {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public ResourceResolver getResourceResolver() {
+        throw new UnsupportedOperationException();
+    }
 
 }
diff --git a/src/test/java/org/apache/sling/query/mock/ResourceMock.java b/src/test/java/org/apache/sling/query/mock/ResourceMock.java
index 39d7804..a49338f 100644
--- a/src/test/java/org/apache/sling/query/mock/ResourceMock.java
+++ b/src/test/java/org/apache/sling/query/mock/ResourceMock.java
@@ -33,129 +33,128 @@
 
 public class ResourceMock implements Resource {
 
-	private final String name;
+    private final String name;
 
-	private final Map<String, Resource> children;
+    private final Map<String, Resource> children;
 
-	private final Resource parent;
+    private final Resource parent;
 
-	public ResourceMock(Resource parent, String name) {
-		this.name = name;
-		this.parent = parent;
-		this.children = new LinkedHashMap<String, Resource>();
-	}
+    public ResourceMock(Resource parent, String name) {
+        this.name = name;
+        this.parent = parent;
+        this.children = new LinkedHashMap<String, Resource>();
+    }
 
-	public void addChild(Resource resource) {
-		children.put(resource.getName(), resource);
-	}
+    public void addChild(Resource resource) {
+        children.put(resource.getName(), resource);
+    }
 
-	@Override
-	public String getName() {
-		return name;
-	}
+    @Override
+    public String getName() {
+        return name;
+    }
 
-	@Override
-	public Resource getParent() {
-		return parent;
-	}
+    @Override
+    public Resource getParent() {
+        return parent;
+    }
 
-	@Override
-	public Iterator<Resource> listChildren() {
-		List<Resource> nonProperties = new ArrayList<Resource>();
-		for (Resource r : children.values()) {
-			if (!(r instanceof PropertyResourceMock)) {
-				nonProperties.add(r);
-			}
-		}
-		return nonProperties.iterator();
-	}
+    @Override
+    public Iterator<Resource> listChildren() {
+        List<Resource> nonProperties = new ArrayList<Resource>();
+        for (Resource r : children.values()) {
+            if (!(r instanceof PropertyResourceMock)) {
+                nonProperties.add(r);
+            }
+        }
+        return nonProperties.iterator();
+    }
 
-	@Override
-	public Resource getChild(String relPath) {
-		if (StringUtils.contains(relPath, '/')) {
-			String firstPart = StringUtils.substringBefore(relPath, "/");
-			String rest = StringUtils.substringAfter(relPath, "/");
-			if (children.containsKey(firstPart)) {
-				return children.get(firstPart).getChild(rest);
-			}
-		} else if (children.containsKey(relPath)) {
-			return children.get(relPath);
-		}
+    @Override
+    public Resource getChild(String relPath) {
+        if (StringUtils.contains(relPath, '/')) {
+            String firstPart = StringUtils.substringBefore(relPath, "/");
+            String rest = StringUtils.substringAfter(relPath, "/");
+            if (children.containsKey(firstPart)) {
+                return children.get(firstPart).getChild(rest);
+            }
+        } else if (children.containsKey(relPath)) {
+            return children.get(relPath);
+        }
 
-		return null;
-	}
+        return null;
+    }
 
-	@SuppressWarnings("unchecked")
-	@Override
-	public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
-		if (type.isAssignableFrom(Map.class)) {
-			Map<String, Object> map = new LinkedHashMap<String, Object>();
-			for (Entry<String, Resource> e : children.entrySet()) {
-				Resource o = e.getValue();
-				String[] stringArray = o.adaptTo(String[].class);
-				String stringValue = o.adaptTo(String.class);
-				if (stringValue != null) {
-					map.put(e.getKey(), stringValue);
-				} else if (stringArray != null) {
-					map.put(e.getKey(), stringArray);
-				}
-			}
-			return (AdapterType) map;
-		} else {
-			return null;
-		}
-	}
+    @SuppressWarnings("unchecked")
+    @Override
+    public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
+        if (type.isAssignableFrom(Map.class)) {
+            Map<String, Object> map = new LinkedHashMap<String, Object>();
+            for (Entry<String, Resource> e : children.entrySet()) {
+                Resource o = e.getValue();
+                String[] stringArray = o.adaptTo(String[].class);
+                String stringValue = o.adaptTo(String.class);
+                if (stringValue != null) {
+                    map.put(e.getKey(), stringValue);
+                } else if (stringArray != null) {
+                    map.put(e.getKey(), stringArray);
+                }
+            }
+            return (AdapterType) map;
+        } else {
+            return null;
+        }
+    }
 
-	@Override
-	public boolean isResourceType(String resourceType) {
-		return StringUtils.isNotBlank(resourceType)
-				&& (resourceType.equals(getPropertyAsString("sling:resourceType")) || resourceType
-						.equals(getPropertyAsString("jcr:primaryType")));
-	}
+    @Override
+    public boolean isResourceType(String resourceType) {
+        return StringUtils.isNotBlank(resourceType) && (resourceType.equals(getPropertyAsString("sling:resourceType"))
+                || resourceType.equals(getPropertyAsString("jcr:primaryType")));
+    }
 
-	@Override
-	public String getResourceType() {
-		if (children.containsKey("sling:resourceType")) {
-			return getPropertyAsString("sling:resourceType");
-		} else {
-			return getPropertyAsString("jcr:primaryType");
-		}
-	}
+    @Override
+    public String getResourceType() {
+        if (children.containsKey("sling:resourceType")) {
+            return getPropertyAsString("sling:resourceType");
+        } else {
+            return getPropertyAsString("jcr:primaryType");
+        }
+    }
 
-	@Override
-	public String getPath() {
-		if (parent == null) {
-			return "";
-		} else {
-			return String.format("%s/%s", parent.getPath(), name);
-		}
-	}
+    @Override
+    public String getPath() {
+        if (parent == null) {
+            return "";
+        } else {
+            return String.format("%s/%s", parent.getPath(), name);
+        }
+    }
 
-	@Override
-	public String getResourceSuperType() {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public String getResourceSuperType() {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public ResourceMetadata getResourceMetadata() {
-		throw new UnsupportedOperationException();
-	}
+    @Override
+    public ResourceMetadata getResourceMetadata() {
+        throw new UnsupportedOperationException();
+    }
 
-	@Override
-	public ResourceResolver getResourceResolver() {
-		return null;
-	}
+    @Override
+    public ResourceResolver getResourceResolver() {
+        return null;
+    }
 
-	@Override
-	public String toString() {
-		return String.format("ResourceMock[%s]", name);
-	}
+    @Override
+    public String toString() {
+        return String.format("ResourceMock[%s]", name);
+    }
 
-	private String getPropertyAsString(String name) {
-		if (children.containsKey(name)) {
-			return children.get(name).adaptTo(String.class);
-		}
-		return null;
-	}
+    private String getPropertyAsString(String name) {
+        if (children.containsKey(name)) {
+            return children.get(name).adaptTo(String.class);
+        }
+        return null;
+    }
 
 }
diff --git a/src/test/java/org/apache/sling/query/mock/json/JsonToResource.java b/src/test/java/org/apache/sling/query/mock/json/JsonToResource.java
index 3635ce1..1b5210c 100644
--- a/src/test/java/org/apache/sling/query/mock/json/JsonToResource.java
+++ b/src/test/java/org/apache/sling/query/mock/json/JsonToResource.java
@@ -34,44 +34,44 @@
 import com.google.gson.JsonPrimitive;
 
 public final class JsonToResource {
-	private JsonToResource() {
-	}
+    private JsonToResource() {
+    }
 
-	public static Resource parse(InputStream inputStream) {
-		JsonElement element = new JsonParser().parse(new InputStreamReader(inputStream));
-		return parseResource(element.getAsJsonObject(), "/", null);
-	}
+    public static Resource parse(InputStream inputStream) {
+        JsonElement element = new JsonParser().parse(new InputStreamReader(inputStream));
+        return parseResource(element.getAsJsonObject(), "/", null);
+    }
 
-	private static Resource parseResource(JsonElement object, String name, Resource parent) {
-		if (object.isJsonArray()) {
-			return parseResource(object.getAsJsonArray(), name, parent);
-		} else if (object.isJsonPrimitive()) {
-			return parseResource(object.getAsJsonPrimitive(), name, parent);
-		} else if (object.isJsonObject()) {
-			return parseResource(object.getAsJsonObject(), name, parent);
-		} else {
-			return null;
-		}
-	}
+    private static Resource parseResource(JsonElement object, String name, Resource parent) {
+        if (object.isJsonArray()) {
+            return parseResource(object.getAsJsonArray(), name, parent);
+        } else if (object.isJsonPrimitive()) {
+            return parseResource(object.getAsJsonPrimitive(), name, parent);
+        } else if (object.isJsonObject()) {
+            return parseResource(object.getAsJsonObject(), name, parent);
+        } else {
+            return null;
+        }
+    }
 
-	private static Resource parseResource(JsonArray array, String name, Resource parent) {
-		final String[] values = new String[array.size()];
-		int i = 0;
-		for (JsonElement e : array) {
-			values[i++] = e.getAsString();
-		}
-		return new PropertyResourceMock(parent, name, values);
-	}
+    private static Resource parseResource(JsonArray array, String name, Resource parent) {
+        final String[] values = new String[array.size()];
+        int i = 0;
+        for (JsonElement e : array) {
+            values[i++] = e.getAsString();
+        }
+        return new PropertyResourceMock(parent, name, values);
+    }
 
-	private static Resource parseResource(JsonPrimitive primitive, String name, Resource parent) {
-		return new PropertyResourceMock(parent, name, primitive.getAsString());
-	}
+    private static Resource parseResource(JsonPrimitive primitive, String name, Resource parent) {
+        return new PropertyResourceMock(parent, name, primitive.getAsString());
+    }
 
-	private static Resource parseResource(JsonObject object, String name, Resource parent) {
-		ResourceMock resource = new ResourceMock(parent, name);
-		for (Entry<String, JsonElement> entry : object.entrySet()) {
-			resource.addChild(parseResource(entry.getValue(), entry.getKey(), resource));
-		}
-		return resource;
-	}
+    private static Resource parseResource(JsonObject object, String name, Resource parent) {
+        ResourceMock resource = new ResourceMock(parent, name);
+        for (Entry<String, JsonElement> entry : object.entrySet()) {
+            resource.addChild(parseResource(entry.getValue(), entry.getKey(), resource));
+        }
+        return resource;
+    }
 }