// 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 EMPTY);
    Method56(argtype ERR);
    Method57(argtype EXPLICIT);
    Method58(argtype EXPORT);
    Method59(argtype EXTENDS);
    Method60(argtype EXTERN);
    Method61(argtype EXTERNAL);
    Method62(argtype FACTORY);
    Method63(argtype FALLTHROUGH);
    Method64(argtype FALSE);
    Method65(argtype FIDL);
    Method66(argtype FIDL_TYPE);
    Method67(argtype FINAL);
    Method68(argtype FINALLY);
    Method69(argtype FLOAT);
    Method70(argtype FN);
    Method71(argtype FOR);
    Method72(argtype FRIEND);
    Method73(argtype FUNC);
    Method74(argtype FUTURE);
    Method75(argtype FUTURES);
    Method76(argtype GET);
    Method77(argtype GO);
    Method78(argtype GOTO);
    Method79(argtype HAS_INVALID_TAG);
    Method80(argtype HASH_CODE);
    Method81(argtype IF);
    Method82(argtype IMPL);
    Method83(argtype IMPLEMENTS);
    Method84(argtype IMPORT);
    Method85(argtype IN);
    Method86(argtype INDEX);
    Method87(argtype INLINE);
    Method88(argtype INT);
    Method89(argtype INT16);
    Method90(argtype INT32);
    Method91(argtype INT64);
    Method92(argtype INT8);
    Method93(argtype INTERFACE);
    Method94(argtype INTERNAL_TAG);
    Method95(argtype IS);
    Method96(argtype LET);
    Method97(argtype LHS);
    Method98(argtype LIBRARY);
    Method99(argtype LIST);
    Method100(argtype LONG);
    Method101(argtype LOOP);
    Method102(argtype MACRO);
    Method103(argtype MAP);
    Method104(argtype MATCH);
    Method105(argtype MIXIN);
    Method106(argtype MOD);
    Method107(argtype MODULE);
    Method108(argtype MOVE);
    Method109(argtype MUT);
    Method110(argtype MUTABLE);
    Method111(argtype NAMESPACE);
    Method112(argtype NEVER);
    Method113(argtype NEW);
    Method114(argtype NO_SUCH_METHOD);
    Method115(argtype NOEXCEPT);
    Method116(argtype NONE);
    Method117(argtype NOT);
    Method118(argtype NOT_EQ);
    Method119(argtype NULL);
    Method120(argtype NULLPTR);
    Method121(argtype NUM);
    Method122(argtype OBJECT);
    Method123(argtype OFFSET);
    Method124(argtype OFFSETOF);
    Method125(argtype OK);
    Method126(argtype ON_OPEN);
    Method127(argtype OPERATOR);
    Method128(argtype OPTION);
    Method129(argtype OR);
    Method130(argtype OR_EQ);
    Method131(argtype OVERRIDE);
    Method132(argtype PACKAGE);
    Method133(argtype PART);
    Method134(argtype PRIV);
    Method135(argtype PRIVATE);
    Method136(argtype PROC);
    Method137(argtype PROTECTED);
    Method138(argtype PROXY);
    Method139(argtype PUB);
    Method140(argtype PUBLIC);
    Method141(argtype PURE);
    Method142(argtype RANGE);
    Method143(argtype REF);
    Method144(argtype REGISTER);
    Method145(argtype REINTERPRET_CAST);
    Method146(argtype REQUIRES);
    Method147(argtype RESULT);
    Method148(argtype RETHROW);
    Method149(argtype RETURN);
    Method150(argtype RHS);
    Method151(argtype RUNE);
    Method152(argtype RUNTIME_TYPE);
    Method153(argtype SELECT);
    Method154(argtype SELF);
    Method155(argtype SEND);
    Method156(argtype SET);
    Method157(argtype SET_CONTROLLER);
    Method158(argtype SHORT);
    Method159(argtype SIGNED);
    Method160(argtype SIZEOF);
    Method161(argtype SOME);
    Method162(argtype STATIC);
    Method163(argtype STATIC_ASSERT);
    Method164(argtype STATIC_CAST);
    Method165(argtype STREAM);
    Method166(argtype STRING);
    Method167(argtype STRUCT);
    Method168(argtype STUB);
    Method169(argtype SUPER);
    Method170(argtype SWITCH);
    Method171(argtype SYNCHRONIZED);
    Method172(argtype TEMPLATE);
    Method173(argtype THIS);
    Method174(argtype THREAD_LOCAL);
    Method175(argtype THROW);
    Method176(argtype TO_STRING);
    Method177(argtype TRAIT);
    Method178(argtype TRUE);
    Method179(argtype TRY);
    Method180(argtype TYPE);
    Method181(argtype TYPEDEF);
    Method182(argtype TYPEID);
    Method183(argtype TYPENAME);
    Method184(argtype TYPEOF);
    Method185(argtype UINT16);
    Method186(argtype UINT32);
    Method187(argtype UINT64);
    Method188(argtype UINT8);
    Method189(argtype UNION);
    Method190(argtype UNSAFE);
    Method191(argtype UNSIGNED);
    Method192(argtype UNSIZED);
    Method193(argtype USE);
    Method194(argtype USING);
    Method195(argtype VALUE);
    Method196(argtype VALUE_OF);
    Method197(argtype VALUE_UNION);
    Method198(argtype VALUES_MAP);
    Method199(argtype VAR);
    Method200(argtype VEC);
    Method201(argtype VIRTUAL);
    Method202(argtype VOID);
    Method203(argtype VOLATILE);
    Method204(argtype WCHAR_T);
    Method205(argtype WHERE);
    Method206(argtype WHICH);
    Method207(argtype WHILE);
    Method208(argtype WITH);
    Method209(argtype XOR);
    Method210(argtype XOR_EQ);
    Method211(argtype XUNION);
    Method212(argtype YIELD);
    Method213(argtype ZX);
};
