// Path: src/com/android/ddmlib/AndroidDebugBridge.java
// public interface IClientChangeListener {
//     /**
//      * Sent when an existing client information changed.
//      * <p/>
//      * This is sent from a non UI thread.
//      * @param client the updated client.
//      * @param changeMask the bit mask describing the changed properties. It can contain
//      * any of the following values: {@link Client#CHANGE_INFO},
//      * {@link Client#CHANGE_DEBUGGER_STATUS}, {@link Client#CHANGE_THREAD_MODE},
//      * {@link Client#CHANGE_THREAD_DATA}, {@link Client#CHANGE_HEAP_MODE},
//      * {@link Client#CHANGE_HEAP_DATA}, {@link Client#CHANGE_NATIVE_HEAP_DATA}
//      */
//     public void clientChanged(Client client, int changeMask);
// }
// 
// Path: src/com/android/ddmlib/ClientData.java
// public static enum AllocationTrackingStatus {
//     /**
//      * Allocation tracking status: unknown.
//      * <p/>This happens right after a {@link Client} is discovered
//      * by the {@link AndroidDebugBridge}, and before the {@link Client} answered the query
//      * regarding its allocation tracking status.
//      * @see Client#requestAllocationStatus()
//      */
//     UNKNOWN,
//     /** Allocation tracking status: the {@link Client} is not tracking allocations. */
//     OFF,
//     /** Allocation tracking status: the {@link Client} is tracking allocations. */
//     ON;
// }


import com.android.ddmlib.AllocationInfo;
import com.android.ddmlib.AllocationInfo.AllocationSorter;
import com.android.ddmlib.AllocationInfo.SortMode;
import com.android.ddmlib.AndroidDebugBridge.IClientChangeListener;
import com.android.ddmlib.Client;
import com.android.ddmlib.ClientData.AllocationTrackingStatus;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTException;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Sash;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Locale;
            // pass
        }
    }

    /**
     * Create our control(s).
     */
    @Override
    protected Control createControl(Composite parent) {
        final IPreferenceStore store = DdmUiPreferences.getStore();

        Display display = parent.getDisplay();

        // get some images
        mSortUpImg = ImageLoader.getDdmUiLibLoader().loadImage("sort_up.png", display);
        mSortDownImg = ImageLoader.getDdmUiLibLoader().loadImage("sort_down.png", display);

        // base composite for selected client with enabled thread update.
        mAllocationBase = new Composite(parent, SWT.NONE);
        mAllocationBase.setLayout(new FormLayout());

        // table above the sash
        Composite topParent = new Composite(mAllocationBase, SWT.NONE);
        topParent.setLayout(new GridLayout(6, false));

        mEnableButton = new Button(topParent, SWT.PUSH);
        mEnableButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Client current = getCurrentClient();
// Path: src/com/android/ddmlib/AndroidDebugBridge.java
// public interface IClientChangeListener {
//     /**
//      * Sent when an existing client information changed.
//      * <p/>
//      * This is sent from a non UI thread.
//      * @param client the updated client.
//      * @param changeMask the bit mask describing the changed properties. It can contain
//      * any of the following values: {@link Client#CHANGE_INFO},
//      * {@link Client#CHANGE_DEBUGGER_STATUS}, {@link Client#CHANGE_THREAD_MODE},
//      * {@link Client#CHANGE_THREAD_DATA}, {@link Client#CHANGE_HEAP_MODE},
//      * {@link Client#CHANGE_HEAP_DATA}, {@link Client#CHANGE_NATIVE_HEAP_DATA}
//      */
//     public void clientChanged(Client client, int changeMask);
// }
// 
// Path: src/com/android/ddmlib/ClientData.java
// public static enum AllocationTrackingStatus {
//     /**
//      * Allocation tracking status: unknown.
//      * <p/>This happens right after a {@link Client} is discovered
//      * by the {@link AndroidDebugBridge}, and before the {@link Client} answered the query
//      * regarding its allocation tracking status.
//      * @see Client#requestAllocationStatus()
//      */
//     UNKNOWN,
//     /** Allocation tracking status: the {@link Client} is not tracking allocations. */
//     OFF,
//     /** Allocation tracking status: the {@link Client} is tracking allocations. */
//     ON;
// }


// Path: src/com/android/ddmuilib/AllocationPanel.java
import com.android.ddmlib.AllocationInfo;
import com.android.ddmlib.AllocationInfo.AllocationSorter;
import com.android.ddmlib.AllocationInfo.SortMode;
import com.android.ddmlib.AndroidDebugBridge.IClientChangeListener;
import com.android.ddmlib.Client;
import com.android.ddmlib.ClientData.AllocationTrackingStatus;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTException;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Sash;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Locale;

            // pass
        }
    }

    /**
     * Create our control(s).
     */
    @Override
    protected Control createControl(Composite parent) {
        final IPreferenceStore store = DdmUiPreferences.getStore();

        Display display = parent.getDisplay();

        // get some images
        mSortUpImg = ImageLoader.getDdmUiLibLoader().loadImage("sort_up.png", display);
        mSortDownImg = ImageLoader.getDdmUiLibLoader().loadImage("sort_down.png", display);

        // base composite for selected client with enabled thread update.
        mAllocationBase = new Composite(parent, SWT.NONE);
        mAllocationBase.setLayout(new FormLayout());

        // table above the sash
        Composite topParent = new Composite(mAllocationBase, SWT.NONE);
        topParent.setLayout(new GridLayout(6, false));

        mEnableButton = new Button(topParent, SWT.PUSH);
        mEnableButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Client current = getCurrentClient();
                AllocationTrackingStatus status = current.getClientData().getAllocationStatus();