public override int GetHashCode()
        {
            unchecked
            {
                var hash = 17;

                hash = hash * 23 + NoControlInput.GetHashCode();
                hash = hash * 23 + SingleControlInput.GetHashCode();
                hash = hash * 23 + MultipleControlInputs.GetHashCode();

                hash = hash * 23 + NoValueInput.GetHashCode();
                hash = hash * 23 + SingleValueInput.GetHashCode();
                hash = hash * 23 + MultipleValueInputs.GetHashCode();

                hash = hash * 23 + NoControlOutput.GetHashCode();
                hash = hash * 23 + SingleControlOutput.GetHashCode();
                hash = hash * 23 + MultipleControlOutputs.GetHashCode();

                hash = hash * 23 + NoValueOutput.GetHashCode();
                hash = hash * 23 + SingleValueOutput.GetHashCode();
                hash = hash * 23 + MultipleValueOutputs.GetHashCode();

                hash = hash * 23 + Self.GetHashCode();
                hash = hash * 23 + Events.GetHashCode();
                hash = hash * 23 + Literals.GetHashCode();
                hash = hash * 23 + Variables.GetHashCode();
                hash = hash * 23 + Members.GetHashCode();
                hash = hash * 23 + Nesters.GetHashCode();
                hash = hash * 23 + Expose.GetHashCode();
                hash = hash * 23 + Obsolete.GetHashCode();
                hash = hash * 23 + AllowSelfNestedGraph.GetHashCode();

                hash = hash * 23 + (CompatibleInputType?.GetHashCode() ?? 0);
                hash = hash * 23 + (CompatibleOutputType?.GetHashCode() ?? 0);

                hash = hash * 23 + GraphHashCode;

                return(hash);
            }
        }