|  | beginCompilationUnit(class) | 
|  | beginMetadataStar(class) | 
|  | endMetadataStar(0) | 
|  | beginClassOrMixinOrNamedMixinApplicationPrelude(class) | 
|  | handleIdentifier(A, classOrMixinDeclaration) | 
|  | handleNoTypeVariables({) | 
|  | beginClassDeclaration(class, null, A) | 
|  | handleNoType(A) | 
|  | handleClassExtends(null, 1) | 
|  | handleClassNoWithClause() | 
|  | handleClassOrMixinImplements(null, 0) | 
|  | handleClassHeader(class, class, null) | 
|  | beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {) | 
|  | endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, }) | 
|  | endClassDeclaration(class, }) | 
|  | endTopLevelDeclaration(class) | 
|  | beginMetadataStar(class) | 
|  | endMetadataStar(0) | 
|  | beginClassOrMixinOrNamedMixinApplicationPrelude(class) | 
|  | handleIdentifier(C, classOrMixinDeclaration) | 
|  | handleNoTypeVariables(extends) | 
|  | beginClassDeclaration(class, null, C) | 
|  | handleIdentifier(A, typeReference) | 
|  | handleNoTypeArguments({) | 
|  | handleType(A, null) | 
|  | handleClassExtends(extends, 1) | 
|  | handleClassNoWithClause() | 
|  | handleClassOrMixinImplements(null, 0) | 
|  | handleClassHeader(class, class, null) | 
|  | beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {) | 
|  | endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, }) | 
|  | endClassDeclaration(class, }) | 
|  | endTopLevelDeclaration(extension) | 
|  | beginMetadataStar(extension) | 
|  | endMetadataStar(0) | 
|  | beginExtensionDeclarationPrelude(extension) | 
|  | handleNoTypeVariables(on) | 
|  | beginExtensionDeclaration(extension, null) | 
|  | handleIdentifier(C, typeReference) | 
|  | handleNoTypeArguments({) | 
|  | handleType(C, null) | 
|  | handleExtensionShowHide(null, 0, null, 0) | 
|  | beginClassOrMixinOrExtensionBody(DeclarationKind.Extension, {) | 
|  | beginMetadataStar(addChild) | 
|  | endMetadataStar(0) | 
|  | beginMember() | 
|  | beginMethod(DeclarationKind.Extension, null, null, null, null, null, addChild) | 
|  | handleNoType({) | 
|  | handleIdentifier(addChild, methodDeclaration) | 
|  | handleNoTypeVariables(() | 
|  | beginFormalParameters((, MemberKind.ExtensionNonStaticMethod) | 
|  | beginMetadataStar(A) | 
|  | endMetadataStar(0) | 
|  | beginFormalParameter(A, MemberKind.ExtensionNonStaticMethod, null, null, null) | 
|  | handleIdentifier(A, typeReference) | 
|  | handleNoTypeArguments(child) | 
|  | handleType(A, null) | 
|  | handleIdentifier(child, formalParameterDeclaration) | 
|  | handleFormalParameterWithoutValue()) | 
|  | endFormalParameter(null, null, child, null, null, FormalParameterKind.mandatory, MemberKind.ExtensionNonStaticMethod) | 
|  | endFormalParameters(1, (, ), MemberKind.ExtensionNonStaticMethod) | 
|  | handleNoInitializers() | 
|  | handleAsyncModifier(null, null) | 
|  | beginBlockFunctionBody({) | 
|  | endBlockFunctionBody(0, {, }) | 
|  | endExtensionMethod(null, addChild, (, null, }) | 
|  | endMember() | 
|  | endClassOrMixinOrExtensionBody(DeclarationKind.Extension, 1, {, }) | 
|  | endExtensionDeclaration(extension, null, on, null, null, }) | 
|  | endTopLevelDeclaration() | 
|  | endCompilationUnit(3, ) |