novie-core/src/main/java/com/groupon/novie/internal/engine/QueryParameter.java
public QueryParameter partialCopy(final QueryParameterKind... excludedElements) {
        List<QueryParameterKind> excludedList = Arrays.asList(excludedElements);
        QueryParameter returnValue = new QueryParameter();
        if (!excludedList.contains(QueryParameterKind.CONSTRAINTS)) {
            returnValue.rawConstraints = this.rawConstraints;
        }
        if (!excludedList.contains(QueryParameterKind.GROUPS)) {
            returnValue.groups = this.groups;
        }
        if (!excludedList.contains(QueryParameterKind.ORDERS)) {
            returnValue.orders = this.orders;
        }
        if (!excludedList.contains(QueryParameterKind.PAGE)) {
            returnValue.pageSize = this.pageSize;
            returnValue.page = this.page;
        }
        if (!excludedList.contains(QueryParameterKind.TIMEZONE)) {
            returnValue.timezoneName = this.timezoneName;
        }

        return returnValue;
    }
public QueryParameter partialCopy(final QueryParameterKind... excludedElements) {
        List<QueryParameterKind> excludedList = Arrays.asList(excludedElements);
        QueryParameter returnValue = new QueryParameter();
        if (!excludedList.contains(QueryParameterKind.CONSTRAINTS)) {
            returnValue.rawConstraints = this.rawConstraints;
        }
        if (!excludedList.contains(QueryParameterKind.GROUPS)) {
            returnValue.groups = this.groups;
        }
        if (!excludedList.contains(QueryParameterKind.ORDERS)) {
            returnValue.orders = this.orders;
        }
        if (!excludedList.contains(QueryParameterKind.PAGE)) {
            returnValue.pageSize = this.pageSize;
            returnValue.page = this.page;
        }
        if (!excludedList.contains(QueryParameterKind.TIMEZONE)) {
            returnValue.timezoneName = this.timezoneName;
        }

        return returnValue;
    }
public QueryParameter partialCopy ( final QueryParameterKind ... excludedElements ) { List < QueryParameterKind > excludedList = Arrays . asList ( excludedElements ) ; QueryParameter returnValue = new QueryParameter ( ) ; if ( ! excludedList . contains ( QueryParameterKind . CONSTRAINTS ) ) { returnValue . rawConstraints = this . rawConstraints ; } if ( ! excludedList . contains ( QueryParameterKind . GROUPS ) ) { returnValue . groups = this . groups ; } if ( ! excludedList . contains ( QueryParameterKind . ORDERS ) ) { returnValue . orders = this . orders ; } if ( ! excludedList . contains ( QueryParameterKind . PAGE ) ) { returnValue . pageSize = this . pageSize ; returnValue . page = this . page ; } if ( ! excludedList . contains ( QueryParameterKind . TIMEZONE ) ) { returnValue . timezoneName = this . timezoneName ; } return returnValue ; }
Return a QueryParameter which contains reference to the original elements except for those from the exception list.

@param excludedElements list of QueryParameterKind which will NOT be cloned
@return
Return a QueryParameter which contains reference to the original elements except for those from the exception list .