// Creating two-dimensional arrays class TwoDimOneSize<region R> { final int N = 10; // Default RPL Object defaultRPL = new int[N][]; // Root bound to RPL, first only int[]<Root>[] rootFirst = new int[N]<Root>[]; // Root bound to RPL, second only int[][]<Root> rootSecond = new int[N][]<Root>; // Root bound to both int[]<Root>[]<Root> rootBoth = new int[N]<Root>[]<Root>; // Index-parameterized RPL first int[]<[i]>#i[] indexParamRPLFirst = new int[N]<[i]>#i[]; // Index-parameterized RPL second int[][]<[i]>#i indexParamRPLSecond = new int[N][]<[i]>#i; // Index-parameterized RPL both int[]<[i]>#i[]<[i]> indexParamRPLBoth = new int[N]<[i]>#i[]<[i]>; // Index-parameterized type first TwoDimOneSize<[i]>[]#i[] indexParamTypeFirst = new TwoDimOneSize<[i]>[N]#i[]; // Index-parameterized type second TwoDimOneSize<[i]>[][]#i indexParamTypeSecond = new TwoDimOneSize<[i]>[N][]#i; // Two indices TwoDimOneSize<[i]:[j]>[]<[i]>#i[]<[i]:[j]>#j twoIndices = new TwoDimOneSize<[i]:[j]>[N]<[i]>#i[]<[i]:[j]>#j; }