if (varChild_lVal == COM.CHILDID_SELF) event.childID = ACC.CHILDID_SELF; else if (control instanceof Tree) event.childID = varChild_lVal; else event.childID = varChild_lVal - 1;
event.childID = osToChildID(varChild_lVal);
	int get_accName(int varChild_vt, int varChild_reserved1, int varChild_lVal, int varChild_reserved2, int pszName) {		if (iaccessible == null) return COM.CO_E_OBJNOTCONNECTED;		if ((varChild_vt & 0xFFFF) != COM.VT_I4) return COM.E_INVALIDARG;		/* Get the default name from the OS. */		String osName = null;		int code = iaccessible.get_accName(varChild_vt, varChild_reserved1, varChild_lVal, varChild_reserved2, pszName);		if (code == COM.E_INVALIDARG) code = COM.S_FALSE; // proxy doesn't know about app childID		if (accessibleListeners.size() == 0) return code;		if (code == COM.S_OK) {			int[] pName = new int[1];			COM.MoveMemory(pName, pszName, 4);			int size = COM.SysStringByteLen(pName[0]);			if (size > 0) {				char[] buffer = new char[(size + 1) /2];				COM.MoveMemory(buffer, pName[0], size);				osName = new String(buffer);			}		}		AccessibleEvent event = new AccessibleEvent(this);		if (varChild_lVal == COM.CHILDID_SELF) event.childID = ACC.CHILDID_SELF;		else if (control instanceof Tree) event.childID = varChild_lVal; // Tree item childIDs are pointers		else event.childID = varChild_lVal - 1; // All other childIDs are 1-based indices		event.result = osName;		for (int i = 0; i < accessibleListeners.size(); i++) {			AccessibleListener listener = (AccessibleListener) accessibleListeners.elementAt(i);			listener.getName(event);		}		if (event.result == null) return code;		char[] data = (event.result + "\0").toCharArray();		int ptr = COM.SysAllocString(data);		COM.MoveMemory(pszName, new int[] { ptr }, 4);		return COM.S_OK;	}