code: public void seekBySpan(String direction, String seekAmount, String span) {
      if(span.startsWith(SEEK_PREFIX)) span = span.substring(3);
      int seekAmountInt = Integer.parseInt(seekAmount);
      assert(direction.equals(DIR_LEFT) || direction.equals(DIR_RIGHT));
      assert(span.equals(DAY) || span.equals(WEEK) || span.equals(MONTH) || 
          span.equals(YEAR) || span.equals(HOUR) || span.equals(MINUTE) || 
          span.equals(SECOND));
      
      boolean isDateSeek = span.equals(DAY) || span.equals(WEEK) || 
        span.equals(MONTH) || span.equals(YEAR);
  
      if(isDateSeek) {
        markDateInvocation();
      }
      else {
        markTimeInvocation(null);
      }
      
      int sign = direction.equals(DIR_RIGHT) ? 1 : -1;
      int field = 
        span.equals(DAY) ? Calendar.DAY_OF_YEAR : 
        span.equals(WEEK) ? Calendar.WEEK_OF_YEAR :
        span.equals(MONTH) ? Calendar.MONTH :
        span.equals(YEAR) ? Calendar.YEAR : 
        span.equals(HOUR) ? Calendar.HOUR: 
        span.equals(MINUTE) ? Calendar.MINUTE: 
        span.equals(SECOND) ? Calendar.SECOND:
        null;
      if(field > 0) _calendar.add(field, seekAmountInt * sign);
    }
docs: seeks by a span of time (weeks, months, etc)
  
  @param direction the direction to seek: two possibilities
  '<' go backward
  '>' go forward
  
  @param seekAmount the amount to seek.  Must be guaranteed to parse as an integer
  
  @param span