// 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.event.names.upper;
protocol DangerousEvents {
  -> ABSTRACT();
  -> ALIGNAS();
  -> ALIGNOF();
  -> AND();
  -> AND_EQ();
  -> AS();
  -> ASM();
  -> ASSERT();
  -> ASYNC();
  -> ATOMIC_CANCEL();
  -> ATOMIC_COMMIT();
  -> ATOMIC_NOEXCEPT();
  -> AUTO();
  -> AWAIT();
  -> BECOME();
  -> BITAND();
  -> BITOR();
  -> BOOL();
  -> BOX();
  -> BREAK();
  -> BYTE();
  -> CASE();
  -> CATCH();
  -> CHAN();
  -> CHAR();
  -> CHAR16_T();
  -> CHAR32_T();
  -> CLASS();
  -> CO_AWAIT();
  -> CO_RETURN();
  -> CO_YIELD();
  -> CODING_TRAITS();
  -> COMPL();
  -> CONCEPT();
  -> CONST();
  -> CONST_CAST();
  -> CONSTEXPR();
  -> CONTINUE();
  -> CONTROLLER();
  -> COVARIANT();
  -> CRATE();
  -> DECLTYPE();
  -> DECODER();
  -> DEFAULT();
  -> DEFER();
  -> DEFERRED();
  -> DELETE();
  -> DO();
  -> DOUBLE();
  -> DYNAMIC();
  -> DYNAMIC_CAST();
  -> ELSE();
  -> ENCODER();
  -> ENSURE_VALUES_INSTANTIATED();
  -> ENUM();
  -> ERR();
  -> EXPLICIT();
  -> EXPORT();
  -> EXTENDS();
  -> EXTERN();
  -> EXTERNAL();
  -> FACTORY();
  -> FALLTHROUGH();
  -> FALSE();
  -> FIDL();
  -> FIDL_TYPE();
  -> FINAL();
  -> FINALLY();
  -> FLOAT();
  -> FN();
  -> FOR();
  -> FRIEND();
  -> FUNC();
  -> FUTURE();
  -> FUTURES();
  -> GET();
  -> GO();
  -> GOTO();
  -> HAS_INVALID_TAG();
  -> HASH_CODE();
  -> IF();
  -> IMPL();
  -> IMPLEMENTS();
  -> IMPORT();
  -> IN();
  -> INDEX();
  -> INLINE();
  -> INT();
  -> INT16();
  -> INT32();
  -> INT64();
  -> INT8();
  -> INTERFACE();
  -> IS();
  -> LET();
  -> LHS();
  -> LIBRARY();
  -> LIST();
  -> LONG();
  -> LOOP();
  -> MACRO();
  -> MAP();
  -> MATCH();
  -> MIXIN();
  -> MOD();
  -> MODULE();
  -> MOVE();
  -> MUT();
  -> MUTABLE();
  -> NAMESPACE();
  -> NEVER();
  -> NEW();
  -> NO_SUCH_METHOD();
  -> NOEXCEPT();
  -> NONE();
  -> NOT();
  -> NOT_EQ();
  -> NULL();
  -> NULLPTR();
  -> NUM();
  -> OBJECT();
  -> OFFSET();
  -> OFFSETOF();
  -> OK();
  -> ON_OPEN();
  -> OPERATOR();
  -> OPTION();
  -> OR();
  -> OR_EQ();
  -> OVERRIDE();
  -> PACKAGE();
  -> PART();
  -> PRIV();
  -> PRIVATE();
  -> PROC();
  -> PROTECTED();
  -> PROXY();
  -> PUB();
  -> PUBLIC();
  -> PURE();
  -> RANGE();
  -> REF();
  -> REGISTER();
  -> REINTERPRET_CAST();
  -> REQUIRES();
  -> RESULT();
  -> RETHROW();
  -> RETURN();
  -> RHS();
  -> RUNE();
  -> RUNTIME_TYPE();
  -> SELECT();
  -> SELF();
  -> SEND();
  -> SET();
  -> SET_CONTROLLER();
  -> SHORT();
  -> SIGNED();
  -> SIZEOF();
  -> SOME();
  -> STATIC();
  -> STATIC_ASSERT();
  -> STATIC_CAST();
  -> STREAM();
  -> STRING();
  -> STRUCT();
  -> STUB();
  -> SUPER();
  -> SWITCH();
  -> SYNCHRONIZED();
  -> TEMPLATE();
  -> THIS();
  -> THREAD_LOCAL();
  -> THROW();
  -> TO_STRING();
  -> TRAIT();
  -> TRUE();
  -> TRY();
  -> TYPE();
  -> TYPEDEF();
  -> TYPEID();
  -> TYPENAME();
  -> TYPEOF();
  -> UINT16();
  -> UINT32();
  -> UINT64();
  -> UINT8();
  -> UNION();
  -> UNSAFE();
  -> UNSIGNED();
  -> UNSIZED();
  -> USE();
  -> USING();
  -> VALUE();
  -> VALUE_OF();
  -> VALUE_UNION();
  -> VALUES_MAP();
  -> VAR();
  -> VEC();
  -> VIRTUAL();
  -> VOID();
  -> VOLATILE();
  -> WCHAR_T();
  -> WHERE();
  -> WHICH();
  -> WHILE();
  -> WITH();
  -> XOR();
  -> XOR_EQ();
  -> XUNION();
  -> YIELD();
  -> ZX();
};
