code: private void writeFunctionTables(List<String> functionNames, List<ParameterMarshaller> functionParams,
        List<Integer> returnTypes) {
      m_functionTable = functionNames.toArray(new String[functionNames.size()]);
  
      int maxParams = 0;
  
      // find the max of all parameter counts
      for (int i = 0; i < functionParams.size(); i++) {
        int paramCount = functionParams.get(i).getParameterCount(false);
        if (paramCount > maxParams) {
          maxParams = paramCount;
        }
      }
  
      m_functionDefinitionTable = new int[functionParams.size()][maxParams + ParameterMarshaller.EXTRA_FUNC_DEF_VALUES];
  
      // output params now
      for (int i = 0; i < functionParams.size(); i++) {
        m_functionDefinitionTable[i] = functionParams.get(i).getFunctionDefinitionArray(i, maxParams, returnTypes.get(i));
      }
    }
docs: Build a static int[m][n] array of function info from a dynamic array where
  n changes size. The last parameter will always remain the last parameter
  but any short rows will pad their parameter types as -1 (type not
  specified)
  
  @param functionParams