Have cgen.go call aNode.Public() more often
diff --git a/internal/cgen/cgen.go b/internal/cgen/cgen.go
index 8ba27c2..f0002bd 100644
--- a/internal/cgen/cgen.go
+++ b/internal/cgen/cgen.go
@@ -854,8 +854,8 @@
 	for _, file := range g.files {
 		for _, tld := range file.TopLevelDecls() {
 			if tld.Kind() != a.KConst ||
-				(v == pubOnly && tld.AsRaw().Flags()&a.FlagsPublic == 0) ||
-				(v == priOnly && tld.AsRaw().Flags()&a.FlagsPublic != 0) {
+				((v == pubOnly) && !tld.AsConst().Public()) ||
+				((v == priOnly) && tld.AsConst().Public()) {
 				continue
 			}
 			if err := f(g, b, tld.AsConst()); err != nil {
@@ -870,8 +870,8 @@
 	for _, file := range g.files {
 		for _, tld := range file.TopLevelDecls() {
 			if tld.Kind() != a.KFunc ||
-				(v == pubOnly && tld.AsRaw().Flags()&a.FlagsPublic == 0) ||
-				(v == priOnly && tld.AsRaw().Flags()&a.FlagsPublic != 0) {
+				((v == pubOnly) && !tld.AsFunc().Public()) ||
+				((v == priOnly) && tld.AsFunc().Public()) {
 				continue
 			}
 			if err := f(g, b, tld.AsFunc()); err != nil {
@@ -886,8 +886,8 @@
 	for _, file := range g.files {
 		for _, tld := range file.TopLevelDecls() {
 			if tld.Kind() != a.KStatus ||
-				(v == pubOnly && tld.AsRaw().Flags()&a.FlagsPublic == 0) ||
-				(v == priOnly && tld.AsRaw().Flags()&a.FlagsPublic != 0) {
+				((v == pubOnly) && !tld.AsStatus().Public()) ||
+				((v == priOnly) && tld.AsStatus().Public()) {
 				continue
 			}
 			if err := f(g, b, tld.AsStatus()); err != nil {
@@ -1167,7 +1167,7 @@
 		return err
 	}
 
-	if n.AsNode().AsRaw().Flags()&a.FlagsPublic != 0 {
+	if n.Public() {
 		if err := g.writeCppMethods(b, n); err != nil {
 			return err
 		}
@@ -1244,7 +1244,7 @@
 	structID := n.QID()[1]
 	for _, file := range g.files {
 		for _, tld := range file.TopLevelDecls() {
-			if (tld.Kind() != a.KFunc) || (tld.AsRaw().Flags()&a.FlagsPublic == 0) {
+			if (tld.Kind() != a.KFunc) || !tld.AsFunc().Public() {
 				continue
 			}
 			f := tld.AsFunc()