code: public Node previousNode() {
  
  		if (currentNode == null)
  			return null;
  
  		// get sibling
  		Node result = getPreviousSibling(currentNode);
  		if (result == null) {
  			result = getParentNode(currentNode);
  			if (result != null) {
  				currentNode = result;
  				return result;
  			}
  			return null;
  		}
  
  		// get the lastChild of result.
  		Node lastChild = getLastChild(result);
  
  		Node prev = lastChild;
  		while (lastChild != null) {
  			prev = lastChild;
  			lastChild = getLastChild(prev);
  		}
  
  		lastChild = prev;
  
  		// if there is a lastChild which passes filters return it.
  		if (lastChild != null) {
  			currentNode = lastChild;
  			return lastChild;
  		}
  
  		// otherwise return the previous sibling.
  		currentNode = result;
  		return result;
  	}
docs: Return the previous Node from the current node, after applying filter,
  whatToshow. If result is not null, set the current Node.