// represent the traversal of a list of Object-s
class AListRange implements IRange{
  
  ALoObj alist;

  AListRange(ALoObj alist){
    this.alist = alist;
  }
  
  // is there a current element available in the structure
  boolean hasMore(){
    return alist instanceof ConsLoObj;
  }

  // produce the current element of the structure
  Object current();

  // produce an iterator for the rest of this structure
  IRange next();  

}