public static boolean isSbeCSharpName(final String value)
    {
        if (possibleCSharpKeyword(value))
        {
            if (isCSharpKeyword(value))
            {
                return false;
            }
        }
        else
        {
            return false;
        }

        return true;
    }
"Check" value for validity of usage as a csharp identifier.
<a href="https://msdn.microsoft.com/en-us/library/aa664670(v=vs.71).aspx">C# identifiers</a>
Which basically boils down to
<p>
first subsequent*
first is { @ | letter | underscore }
subsequent is { first | digit | connecting | combining | formatting }*
<p>
letter is Lu, Ll, Lt, Lm, Lo, or Nl (possibly escaped)
digit is Nd (possibly escaped)
connecting is Pc (possibly escaped)
combining is Mn or Mc (possibly escaped)
formatting is Cf (possibly escaped)
<p>
so that all becomes:
{ @ | _ | Lu | Ll | Lt | Lm | Lo | Nl } { @ | _ | Lu | Ll | Lt | Lm | Lo | Nl | Nd | Pc | Mn | Mc | Cf}*

@param value to check
@return true for validity as a csharp name. false if not.
sbe-tool/src/main/java/uk/co/real_logic/sbe/ValidationUtil.java