args.length );
int[] declIndexes = this.queryElement.getDeclIndexes();
for ( int i = 0, length = declIndexes.length; i < length; i++ ) {
Declaration declr = (Declaration) argsTemplate[declIndexes[i]];
Object tupleObject = leftTuple.get( declr ).getObject();
Object o;
if ( tupleObject instanceof DroolsQuery ) {
// If the query passed in a Variable, we need to use it
ArrayElementReader arrayReader = (ArrayElementReader) declr.getExtractor();
if ( ((DroolsQuery) tupleObject).getVariables()[arrayReader.getIndex()] != null ) {
o = Variable.v;
} else {
o = declr.getValue( workingMemory,
tupleObject );
}
} else {
o = declr.getValue( workingMemory,
tupleObject );
}
args[declIndexes[i]] = o;
}