/*
 * Copyright (c) 2007, 2008, 2011, 2012, 2015 Eike Stepper (Berlin, Germany) and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Eike Stepper - initial API and implementation
 */
package org.eclipse.net4j.internal.buddies.protocol;

import org.eclipse.net4j.buddies.internal.common.protocol.CollaborationLeftIndication;
import org.eclipse.net4j.internal.buddies.Self;

/**
 * @author Eike Stepper
 */
public class ClientCollaborationLeftIndication extends CollaborationLeftIndication
{
  public ClientCollaborationLeftIndication(BuddiesClientProtocol protocol, Self self)
  {
    super(protocol, self.getSession(), self);
  }
}
