private static void generateStringListInits(
      PrintWriter writer, Collection<ParameterDeclaration> params) {
    for (ParameterDeclaration param : params) {
      StringList stringList_annotation = param.getAnnotation(StringList.class);
      if (stringList_annotation != null) {
        String lengths = stringList_annotation.lengths();

        // Init vars
        writer.println("\t_str_i = 0;");
        writer.println(
            "\t_str_address = (GLchar *)" + param.getSimpleName() + BUFFER_ADDRESS_POSTFIX + ";");
        // Fill string array with the string pointers
        writer.println("\twhile ( _str_i < " + stringList_annotation.value() + " ) {");
        if (lengths.length() == 0) {
          writer.println(
              "\t\t" + param.getSimpleName() + STRING_LIST_POSTFIX + "[_str_i++] = _str_address;");
          writer.println("\t\t_str_address += strlen(_str_address) + 1;");
        } else {
          writer.println(
              "\t\t" + param.getSimpleName() + STRING_LIST_POSTFIX + "[_str_i] = _str_address;");
          writer.println("\t\t_str_address += " + lengths + BUFFER_ADDRESS_POSTFIX + "[_str_i++];");
        }
        writer.println("\t}");
      }
    }
  }