Function(
 Function {
  head: Destructured(
   FunctionHeadDestructured {
    ellipsis: false,
    identifier: None,
    arguments: [
     FunctionHeadDestructuredArgument {
      identifier: "cert",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "group",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "groups",
      default: None,
     },
     FunctionHeadDestructuredArgument {
      identifier: "user",
      default: None,
     },
    ],
   },
  ),
  body: Map(
   Map {
    recursive: false,
    bindings: [
     KeyValue(
      BindingKeyValue {
       from: [
        Raw(
         PartRaw {
          content: "assertion",
          span: Span {
           start: Position {
            line: 2,
            column: 3,
           },
           end: Position {
            line: 2,
            column: 12,
           },
          },
         },
        ),
       ],
       to: BinaryOperation(
        BinaryOperation {
         left: BinaryOperation(
          BinaryOperation {
           left: PropertyAccess(
            PropertyAccess {
             expression: Identifier(
              Identifier {
               id: "cert",
               span: Span {
                start: Position {
                 line: 2,
                 column: 15,
                },
                end: Position {
                 line: 2,
                 column: 19,
                },
               },
              },
             ),
             attribute_path: [
              Raw(
               PartRaw {
                content: "group",
                span: Span {
                 start: Position {
                  line: 2,
                  column: 20,
                 },
                 end: Position {
                  line: 2,
                  column: 25,
                 },
                },
               },
              ),
             ],
             default: None,
            },
           ),
           operator: EqualTo,
           right: Identifier(
            Identifier {
             id: "group",
             span: Span {
              start: Position {
               line: 2,
               column: 29,
              },
              end: Position {
               line: 2,
               column: 34,
              },
             },
            },
           ),
          },
         ),
         operator: LogicalOr,
         right: FunctionApplication(
          FunctionApplication {
           function: PropertyAccess(
            PropertyAccess {
             expression: Identifier(
              Identifier {
               id: "builtins",
               span: Span {
                start: Position {
                 line: 2,
                 column: 38,
                },
                end: Position {
                 line: 2,
                 column: 46,
                },
               },
              },
             ),
             attribute_path: [
              Raw(
               PartRaw {
                content: "any",
                span: Span {
                 start: Position {
                  line: 2,
                  column: 47,
                 },
                 end: Position {
                  line: 2,
                  column: 50,
                 },
                },
               },
              ),
             ],
             default: None,
            },
           ),
           arguments: [
            Function(
             Function {
              head: Simple(
               FunctionHeadSimple {
                identifier: "u",
               },
              ),
              body: BinaryOperation(
               BinaryOperation {
                left: Identifier(
                 Identifier {
                  id: "u",
                  span: Span {
                   start: Position {
                    line: 2,
                    column: 55,
                   },
                   end: Position {
                    line: 2,
                    column: 56,
                   },
                  },
                 },
                ),
                operator: EqualTo,
                right: Identifier(
                 Identifier {
                  id: "user",
                  span: Span {
                   start: Position {
                    line: 2,
                    column: 60,
                   },
                   end: Position {
                    line: 2,
                    column: 64,
                   },
                  },
                 },
                ),
               },
              ),
              span: Span {
               start: Position {
                line: 2,
                column: 52,
               },
               end: Position {
                line: 2,
                column: 64,
               },
              },
             },
            ),
            PropertyAccess(
             PropertyAccess {
              expression: Identifier(
               Identifier {
                id: "groups",
                span: Span {
                 start: Position {
                  line: 2,
                  column: 66,
                 },
                 end: Position {
                  line: 2,
                  column: 72,
                 },
                },
               },
              ),
              attribute_path: [
               Interpolation(
                PartInterpolation {
                 expression: PropertyAccess(
                  PropertyAccess {
                   expression: Identifier(
                    Identifier {
                     id: "cert",
                     span: Span {
                      start: Position {
                       line: 2,
                       column: 75,
                      },
                      end: Position {
                       line: 2,
                       column: 79,
                      },
                     },
                    },
                   ),
                   attribute_path: [
                    Raw(
                     PartRaw {
                      content: "group",
                      span: Span {
                       start: Position {
                        line: 2,
                        column: 80,
                       },
                       end: Position {
                        line: 2,
                        column: 85,
                       },
                      },
                     },
                    ),
                   ],
                   default: None,
                  },
                 ),
                },
               ),
               Raw(
                PartRaw {
                 content: "members",
                 span: Span {
                  start: Position {
                   line: 2,
                   column: 87,
                  },
                  end: Position {
                   line: 2,
                   column: 94,
                  },
                 },
                },
               ),
              ],
              default: None,
             },
            ),
           ],
          },
         ),
        },
       ),
      },
     ),
     KeyValue(
      BindingKeyValue {
       from: [
        Raw(
         PartRaw {
          content: "message",
          span: Span {
           start: Position {
            line: 3,
            column: 3,
           },
           end: Position {
            line: 3,
            column: 10,
           },
          },
         },
        ),
       ],
       to: String(
        String_ {
         parts: [
          Raw(
           PartRaw {
            content: "Group for certificate ",
            span: Span {
             start: Position {
              line: 3,
              column: 14,
             },
             end: Position {
              line: 3,
              column: 50,
             },
            },
           },
          ),
          Interpolation(
           PartInterpolation {
            expression: PropertyAccess(
             PropertyAccess {
              expression: Identifier(
               Identifier {
                id: "cert",
                span: Span {
                 start: Position {
                  line: 3,
                  column: 38,
                 },
                 end: Position {
                  line: 3,
                  column: 42,
                 },
                },
               },
              ),
              attribute_path: [
               Raw(
                PartRaw {
                 content: "domain",
                 span: Span {
                  start: Position {
                   line: 3,
                   column: 43,
                  },
                  end: Position {
                   line: 3,
                   column: 49,
                  },
                 },
                },
               ),
              ],
              default: None,
             },
            ),
           },
          ),
          Raw(
           PartRaw {
            content: " must be ",
            span: Span {
             start: Position {
              line: 3,
              column: 14,
             },
             end: Position {
              line: 3,
              column: 59,
             },
            },
           },
          ),
          Interpolation(
           PartInterpolation {
            expression: Identifier(
             Identifier {
              id: "group",
              span: Span {
               start: Position {
                line: 3,
                column: 61,
               },
               end: Position {
                line: 3,
                column: 66,
               },
              },
             },
            ),
           },
          ),
          Raw(
           PartRaw {
            content: ", or user ",
            span: Span {
             start: Position {
              line: 3,
              column: 14,
             },
             end: Position {
              line: 3,
              column: 77,
             },
            },
           },
          ),
          Interpolation(
           PartInterpolation {
            expression: Identifier(
             Identifier {
              id: "user",
              span: Span {
               start: Position {
                line: 3,
                column: 79,
               },
               end: Position {
                line: 3,
                column: 83,
               },
              },
             },
            ),
           },
          ),
          Raw(
           PartRaw {
            content: " must be a member of group ",
            span: Span {
             start: Position {
              line: 3,
              column: 14,
             },
             end: Position {
              line: 3,
              column: 111,
             },
            },
           },
          ),
          Interpolation(
           PartInterpolation {
            expression: PropertyAccess(
             PropertyAccess {
              expression: Identifier(
               Identifier {
                id: "cert",
                span: Span {
                 start: Position {
                  line: 3,
                  column: 113,
                 },
                 end: Position {
                  line: 3,
                  column: 117,
                 },
                },
               },
              ),
              attribute_path: [
               Raw(
                PartRaw {
                 content: "group",
                 span: Span {
                  start: Position {
                   line: 3,
                   column: 118,
                  },
                  end: Position {
                   line: 3,
                   column: 123,
                  },
                 },
                },
               ),
              ],
              default: None,
             },
            ),
           },
          ),
         ],
         span: Span {
          start: Position {
           line: 3,
           column: 13,
          },
          end: Position {
           line: 3,
           column: 125,
          },
         },
        },
       ),
      },
     ),
    ],
    span: Span {
     start: Position {
      line: 1,
      column: 32,
     },
     end: Position {
      line: 4,
      column: 2,
     },
    },
   },
  ),
  span: Span {
   start: Position {
    line: 1,
    column: 1,
   },
   end: Position {
    line: 4,
    column: 2,
   },
  },
 },
)