// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Generated by generate.py.
library fidl.test.dangerous.method.request.arguments.upper;
using argtype = uint32;
protocol DangerousRequestArguments {
  Method0(argtype ABSTRACT);
  Method1(argtype ALIGNAS);
  Method2(argtype ALIGNOF);
  Method3(argtype AND);
  Method4(argtype AND_EQ);
  Method5(argtype AS);
  Method6(argtype ASM);
  Method7(argtype ASSERT);
  Method8(argtype ASYNC);
  Method9(argtype ATOMIC_CANCEL);
  Method10(argtype ATOMIC_COMMIT);
  Method11(argtype ATOMIC_NOEXCEPT);
  Method12(argtype AUTO);
  Method13(argtype AWAIT);
  Method14(argtype BECOME);
  Method15(argtype BITAND);
  Method16(argtype BITOR);
  Method17(argtype BOOL);
  Method18(argtype BOX);
  Method19(argtype BREAK);
  Method20(argtype BYTE);
  Method21(argtype CASE);
  Method22(argtype CATCH);
  Method23(argtype CHAN);
  Method24(argtype CHAR);
  Method25(argtype CHAR16_T);
  Method26(argtype CHAR32_T);
  Method27(argtype CLASS);
  Method28(argtype CO_AWAIT);
  Method29(argtype CO_RETURN);
  Method30(argtype CO_YIELD);
  Method31(argtype CODING_TRAITS);
  Method32(argtype COMPL);
  Method33(argtype CONCEPT);
  Method34(argtype CONST);
  Method35(argtype CONST_CAST);
  Method36(argtype CONSTEXPR);
  Method37(argtype CONTINUE);
  Method38(argtype CONTROLLER);
  Method39(argtype COVARIANT);
  Method40(argtype CRATE);
  Method41(argtype DECLTYPE);
  Method42(argtype DECODER);
  Method43(argtype DEFAULT);
  Method44(argtype DEFER);
  Method45(argtype DEFERRED);
  Method46(argtype DELETE);
  Method47(argtype DO);
  Method48(argtype DOUBLE);
  Method49(argtype DYNAMIC);
  Method50(argtype DYNAMIC_CAST);
  Method51(argtype ELSE);
  Method52(argtype ENCODER);
  Method53(argtype ENSURE_VALUES_INSTANTIATED);
  Method54(argtype ENUM);
  Method55(argtype ERR);
  Method56(argtype EXPLICIT);
  Method57(argtype EXPORT);
  Method58(argtype EXTENDS);
  Method59(argtype EXTERN);
  Method60(argtype EXTERNAL);
  Method61(argtype FACTORY);
  Method62(argtype FALLTHROUGH);
  Method63(argtype FALSE);
  Method64(argtype FIDL);
  Method65(argtype FIDL_TYPE);
  Method66(argtype FINAL);
  Method67(argtype FINALLY);
  Method68(argtype FLOAT);
  Method69(argtype FN);
  Method70(argtype FOR);
  Method71(argtype FRIEND);
  Method72(argtype FUNC);
  Method73(argtype FUTURE);
  Method74(argtype FUTURES);
  Method75(argtype GET);
  Method76(argtype GO);
  Method77(argtype GOTO);
  Method78(argtype HAS_INVALID_TAG);
  Method79(argtype HASH_CODE);
  Method80(argtype IF);
  Method81(argtype IMPL);
  Method82(argtype IMPLEMENTS);
  Method83(argtype IMPORT);
  Method84(argtype IN);
  Method85(argtype INDEX);
  Method86(argtype INLINE);
  Method87(argtype INT);
  Method88(argtype INT16);
  Method89(argtype INT32);
  Method90(argtype INT64);
  Method91(argtype INT8);
  Method92(argtype INTERFACE);
  Method93(argtype IS);
  Method94(argtype LET);
  Method95(argtype LHS);
  Method96(argtype LIBRARY);
  Method97(argtype LIST);
  Method98(argtype LONG);
  Method99(argtype LOOP);
  Method100(argtype MACRO);
  Method101(argtype MAP);
  Method102(argtype MATCH);
  Method103(argtype MIXIN);
  Method104(argtype MOD);
  Method105(argtype MODULE);
  Method106(argtype MOVE);
  Method107(argtype MUT);
  Method108(argtype MUTABLE);
  Method109(argtype NAMESPACE);
  Method110(argtype NEVER);
  Method111(argtype NEW);
  Method112(argtype NO_SUCH_METHOD);
  Method113(argtype NOEXCEPT);
  Method114(argtype NONE);
  Method115(argtype NOT);
  Method116(argtype NOT_EQ);
  Method117(argtype NULL);
  Method118(argtype NULLPTR);
  Method119(argtype NUM);
  Method120(argtype OBJECT);
  Method121(argtype OFFSET);
  Method122(argtype OFFSETOF);
  Method123(argtype OK);
  Method124(argtype ON_OPEN);
  Method125(argtype OPERATOR);
  Method126(argtype OPTION);
  Method127(argtype OR);
  Method128(argtype OR_EQ);
  Method129(argtype OVERRIDE);
  Method130(argtype PACKAGE);
  Method131(argtype PART);
  Method132(argtype PRIV);
  Method133(argtype PRIVATE);
  Method134(argtype PROC);
  Method135(argtype PROTECTED);
  Method136(argtype PROXY);
  Method137(argtype PUB);
  Method138(argtype PUBLIC);
  Method139(argtype PURE);
  Method140(argtype RANGE);
  Method141(argtype REF);
  Method142(argtype REGISTER);
  Method143(argtype REINTERPRET_CAST);
  Method144(argtype REQUIRES);
  Method145(argtype RESULT);
  Method146(argtype RETHROW);
  Method147(argtype RETURN);
  Method148(argtype RHS);
  Method149(argtype RUNE);
  Method150(argtype RUNTIME_TYPE);
  Method151(argtype SELECT);
  Method152(argtype SELF);
  Method153(argtype SEND);
  Method154(argtype SET);
  Method155(argtype SET_CONTROLLER);
  Method156(argtype SHORT);
  Method157(argtype SIGNED);
  Method158(argtype SIZEOF);
  Method159(argtype SOME);
  Method160(argtype STATIC);
  Method161(argtype STATIC_ASSERT);
  Method162(argtype STATIC_CAST);
  Method163(argtype STREAM);
  Method164(argtype STRING);
  Method165(argtype STRUCT);
  Method166(argtype STUB);
  Method167(argtype SUPER);
  Method168(argtype SWITCH);
  Method169(argtype SYNCHRONIZED);
  Method170(argtype TEMPLATE);
  Method171(argtype THIS);
  Method172(argtype THREAD_LOCAL);
  Method173(argtype THROW);
  Method174(argtype TO_STRING);
  Method175(argtype TRAIT);
  Method176(argtype TRUE);
  Method177(argtype TRY);
  Method178(argtype TYPE);
  Method179(argtype TYPEDEF);
  Method180(argtype TYPEID);
  Method181(argtype TYPENAME);
  Method182(argtype TYPEOF);
  Method183(argtype UINT16);
  Method184(argtype UINT32);
  Method185(argtype UINT64);
  Method186(argtype UINT8);
  Method187(argtype UNION);
  Method188(argtype UNSAFE);
  Method189(argtype UNSIGNED);
  Method190(argtype UNSIZED);
  Method191(argtype USE);
  Method192(argtype USING);
  Method193(argtype VALUE);
  Method194(argtype VALUE_OF);
  Method195(argtype VALUE_UNION);
  Method196(argtype VALUES_MAP);
  Method197(argtype VAR);
  Method198(argtype VEC);
  Method199(argtype VIRTUAL);
  Method200(argtype VOID);
  Method201(argtype VOLATILE);
  Method202(argtype WCHAR_T);
  Method203(argtype WHERE);
  Method204(argtype WHICH);
  Method205(argtype WHILE);
  Method206(argtype WITH);
  Method207(argtype XOR);
  Method208(argtype XOR_EQ);
  Method209(argtype XUNION);
  Method210(argtype YIELD);
  Method211(argtype ZX);
};
