new ITypeDescription[] { type },
new ITypeDescription[] { null },
getDefinitely(Type.VOID), setter));
}
} else {
MethodTypeInfo info = (MethodTypeInfo) infos[i++];
if (info.getIndex() != index) {
throw new IllegalArgumentException(
"Bad UNOTYPEINFO for " + zClass
+ ": entries not ordererd");
}
Method method = findMethod(methods, info.getName());
Class[] params = method.getParameterTypes();
ITypeDescription[] in = new ITypeDescription[params.length];
ITypeDescription[] out
= new ITypeDescription[params.length];
for (int j = 0; j < params.length; ++j) {
ParameterTypeInfo p = null;
if (i < infoCount
&& infos[i] instanceof ParameterTypeInfo
&& ((ParameterTypeInfo) infos[i]).getIndex() == j)
{
p = (ParameterTypeInfo) infos[i++];
}
Type pt = p == null ? null : p.getUnoType();
ITypeDescription d = pt == null
? getTypeDescription(params[j], p)
: getDefinitely(pt);
if (p == null || p.isIN()) {
in[j] = d;
}
if (p != null && p.isOUT()) {
out[j] = d;
}
}
Type t = info.getUnoType();
directList.add(
new MethodDescription(
info.getName(), index++ + methodOffset,
info.isOneway(), in, out,
(t == null
? getTypeDescription(method.getReturnType(), info)
: getDefinitely(t)),
method));
}