Accessible getAccessible(final Accessible accessibleTable) {
	if (accessible == null) {
		accessible = new Accessible(accessibleTable);
		accessible.addAccessibleListener(new AccessibleAdapter() {
			public void getName(AccessibleEvent e) {
				e.result = getText();
				System.out.println("tableColumn getName = " + e.result);
			}
		});
		accessible.addAccessibleControlListener(new AccessibleControlAdapter() {
			public void getChildAtPoint(AccessibleControlEvent e) {
				Point point = parent.toControl(e.x, e.y);
				int x = getX();
				if (x <= point.x && point.x <= x + getWidth()) {
					e.childID = ACC.CHILDID_SELF;
				} else {
					e.childID = ACC.CHILDID_NONE;
				}
			}
			public void getChildCount(AccessibleControlEvent e) {
				e.detail = 0;
			}
			public void getLocation(AccessibleControlEvent e) {
				Rectangle rect = parent.header.getBounds();
				rect.x = getX();
				Point pt = parent.toDisplay(rect.x, rect.y);
				e.x = pt.x;
				e.y = pt.y;
				e.width = width;
				e.height = rect.height;
			}
			public void getRole(AccessibleControlEvent e) {
				e.detail = ACC.ROLE_TABLECELL;
			}
		});
		accessible.addAccessibleTableCellListener(new AccessibleTableCellListener() {
			public void getColumnHeaders(AccessibleTableCellEvent e) {
				/* Column header does not have a header. */
			}
			public void getColumnIndex(AccessibleTableCellEvent e) {
				e.index = getIndex();
			}
			public void getColumnSpan(AccessibleTableCellEvent e) {
				e.count = 1; /* CTable cells only occupy one column. */
			}
			public void getRowHeaders(AccessibleTableCellEvent e) {
				 /* CTable does not support row headers. */
			}
			public void getRowIndex(AccessibleTableCellEvent e) {
				e.index = 0;
			}
			public void getRowSpan(AccessibleTableCellEvent e) {
				e.count = 1; /* CTable cells only occupy one row. */
			}
			public void getTable(AccessibleTableCellEvent e) {
				e.accessible = accessibleTable;
			}
			public void isSelected(AccessibleTableCellEvent e) {
				e.isSelected = false;  /* CTable columns cannot be selected (only rows can be selected). */
			}
		});
	}
	return accessible;
}