code: public List<UIComponent> resolve(UIComponent component, List<UIComponent> parentComponents, String currentId,
  			String originalExpression, String[] parameters) {
  		List<UIComponent> result = new ArrayList<UIComponent>();
  		for (UIComponent parent : parentComponents) {
  			UIComponent grandparent = component.getParent();
  			for (int i = 0; i < grandparent.getChildCount(); i++) {
  				if (grandparent.getChildren().get(i) == parent) {
  						if(i == 0) //if this is the first element of this component tree level there is no previous
  							throw new FacesException(ERROR_MESSAGE + originalExpression);
  						//otherwise take the components before this one
  						while ((--i)>=0) {
  							result.add(grandparent.getChildren().get(i));
  						}
  						return result;
  				}
  			}
  		}
  
  		throw new FacesException(ERROR_MESSAGE + originalExpression);
  	}
docs: Collects everything preceding the current JSF node within the same branch of the tree.
  It's like "@previous previous:@previous previous:@previous:@previous ...".