private static void generateGroupProperty(
        final StringBuilder sb,
        final String groupName,
        final String groupClassName,
        final String outerClassName,
        final Token token,
        final String goTypeForNumInGroup,
        final String indent)
    {
        final String propertyName = formatPropertyName(groupName);

        new Formatter(sb).format(
            indent + "    func (m *%3$s) %1$sId() int {\n" +
            indent + "        return %2$d\n" +
            indent + "    }\n",
            propertyName,
            token.id(),
            outerClassName);


        new Formatter(sb).format("\n" +
            indent + "func (m *%1$s) %2$s() *%3$s {\n" +
            indent + "    m._%2$s.WrapForDecode(m.buffer, m.sbePositionPtr(), m.actingVersion, m.bufferLength)\n" +
            indent + "    return &m._%2$s\n" +
            indent + "}\n",
            outerClassName,
            propertyName,
            groupClassName);

        new Formatter(sb).format("\n" +
            indent + "func (m *%1$s) %2$sCount(count %3$s) *%4$s {\n" +
            indent +
            "    m._%2$s.WrapForEncode(m.buffer, count, m.sbePositionPtr(), m.actingVersion, m.bufferLength)\n" +
            indent + "    return &m._%2$s\n" +
            indent + "}\n",
            outerClassName,
            propertyName,
            goTypeForNumInGroup,
            groupClassName);

        final int version = token.version();
        final String versionCheck = 0 == version ?
            "    return true\n" : "    return m.actingVersion >= m.%1$sSinceVersion()\n";
        new Formatter(sb).format("\n" +
            indent + "func (m *%3$s) %1$sSinceVersion() uint64 {\n" +
            indent + "    return %2$d\n" +
            indent + "}\n\n" +

            indent + "func (m *%3$s) %1$sInActingVersion() bool {\n" +
            indent + versionCheck +
            indent + "}\n",
            propertyName,
            version,
            outerClassName);
    }
Create a new Golang language {@link CodeGenerator}.

@param ir                            for the messages and types.
@param shouldDecodeUnknownEnumValues generate support for unknown enum values when decoding.
@param outputManager                 for generating the codecs to.
sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/golang/flyweight/GolangFlyweightGenerator.java