What does this code do:

public Output<?>[] outputList(int idx, int length) {
    Output[] arrayOfOutput = new Output[length];
    for (int i = 0; i < length; i++)
      arrayOfOutput[i] = output(idx + i); 
    return (Output<?>[])arrayOfOutput;
  }
