private static AccessibleTableCellInfo GetAccTableCellInfo(System.IntPtr accObj, int vmId, int index)
        {
            AccessibleTableCellInfo accTableCellInfo = new AccessibleTableCellInfo();

            if (!accObj.Equals((System.IntPtr)System.IntPtr.Zero))
            {
                System.IntPtr accTable = GetAccTable(accObj, vmId);
                try
                {
                    if (!accTable.Equals((System.IntPtr)System.IntPtr.Zero))
                    {
                        int row    = JavaAccNativeMethods.getAccessibleTableRow(vmId, accTable, index);
                        int column = JavaAccNativeMethods.getAccessibleTableColumn(vmId, accTable, index);
                        if (JavaAccNativeMethods.getAccessibleTableCellInfo(vmId, accTable, row, column, out accTableCellInfo))
                        {
                            return(accTableCellInfo);
                        }
                    }
                }
                catch (System.Exception exception)
                {
                    if (!IsJavaAccException(exception) || !IsJavaAccExceptionMaskable(exception))
                    {
                        throw;
                    }
                    return(accTableCellInfo);
                }
                finally
                {
                    ReleaseObject(accTable, vmId);
                }
            }
            return(accTableCellInfo);
        }