code: public SearchCriteria setProjections(
                      final List<? extends Projection> projections
                      )
      {
          if (projections == null  ||  projections.size() == 0) {
              clearProjections();
              return this;
          }
  
          synchronized (projections) {
              for (Projection  proj : projections) {
                  if (proj == null) {
                      throw new IllegalArgumentException( "null element" );
                  }
              }
  
              clearProjections();
              for (Projection  proj : projections) {
                  addProjection( proj );
              }
          }
  
          return this;
      }
docs: Sets the specified projection to restrict the result values.
  
  <p>If the specified list is null or empty,
  it clears the previous list.
  If one of the element in the list is null,
  the previous list is not modified and an exception is thrown.
  </p>
  
  @param   projections
  the projection list.
  @throws  IllegalArgumentException
  if an element in the specified list is null.