{
package predicates
}

A ← a:'a' !{
    fmt.Println(string(c.text))
    return true, nil
} 

/ b:'b' !{
    fmt.Println(string(c.text))
    return true, nil
}

/ d:'d' &{
    fmt.Println(string(c.text))
    return true, nil
}

B ← out:( inner:( [^abd] innermost:. &{return true, nil} ) &{return true, nil} ) &{return true, nil}

C ← &(inand:[efg]) rest:hij {
    return nil, nil
}
