code: public void Add( CalendarPeriod pPeriod )
  	{
  		if( (days != null) && (pPeriod.getDays() != null) )
  		{
  			for( int i = 0; i < 7; i++ )
  			{
  				if( days.getDay( i ).get() + pPeriod.getDays().getDay( i ).get() >= 1 )
  				{
  					days.setDay( i );
  				}
  			}
  			return;
  		}
  
  		// if one of the two operands is unresolved, it's a good time to resolve
  		// it now
  		List<Period> _periods = null;
  		CalendarPeriod _toResolve = null;
  		if( (days != null) || (pPeriod.getDays() != null) )
  		{
  			if( days == null )
  			{
  				_periods = this.getPeriods();
  				_toResolve = pPeriod;
  			}
  			else
  			{
  				_periods = pPeriod.getPeriods();
  				_toResolve = this;
  			}
  
  			String _from = _periods.get( 0 ).getFrom();
  			String _to = _periods.get( _periods.size() - 1 ).getTo();
  
  			_toResolve.Resolve( _from, _to );
  
  		}
  
  		// Laurent: added to prevent uninitialized periods
  		if( periods == null )
  			Init();
  
  		// combine les deux tableaux dans ordre croissant
  		List<Period> combined = _Combine( periods, pPeriod.getPeriods() );
  
  		// merge overlapping periods
  		List<Period> result = _Merge( combined );
  
  		periods = result;
  	}
docs: OR combination