code: public synchronized List<Long> getTicksOnStream()
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "getTicksOnStream");
        
      List<Long> msgs = new ArrayList<Long>();    
      StateStream stateStream = getStateStream();
      
      // Initial range in stream is always completed Range
      stateStream.setCursor(0);
      
      // skip this and move to next range
      stateStream.getNext();
       
      // Get the first TickRange after completed range and move cursor to the next one
      TickRange tr = stateStream.getNext();
  
      // Iterate until we reach final Unknown range
      while (tr.endstamp < RangeList.INFINITY)
      {
        if( !(tr.type == TickRange.Completed) )
        {
          msgs.add(new Long(tr.startstamp));
        }
        tr = stateStream.getNext();
      }
      
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "getTicksOnStream", msgs);
      return msgs;
    }
docs: Gets a list of all tick values on the state stream
  @param stream
  @return