I don't think we should need these new PDataType functions that take an arrayIndex argument. All array access should go through your new ArrayIndexFunction.