public static boolean heredoc(PsiBuilder b, int l) {
    if (!recursion_guard_(b, l, "heredoc")) return false;
    if (!nextTokenIs(b, HEREDOC_MARKER_TAG)) return false;
    boolean r;
    Marker m = enter_section_(b);
    r = consumeTokens(b, 0, HEREDOC_MARKER_TAG, HEREDOC_MARKER_START);
    r = r && heredoc_2(b, l + 1);
    r = r && newlines(b, l + 1);
    r = r && heredoc_4(b, l + 1);
    r = r && heredoc_5(b, l + 1);
    exit_section_(b, m, HEREDOC, r);
    return r;
  }
public static boolean heredoc(PsiBuilder b, int l)