public FunctionSignature DecodeSignature()
        {
            var sig    = new FunctionSignature();
            int length = DecodeLength();

            if (length > 0)
            {
                int i = length;
                while (i > 0)
                {
                    var paramName = DecodeId();
                    // does not contain anything worthwile, only nesting
                    var paramLength = DecodeLength();
                    sig.Parameter.Add(Tuple.Create(paramName, paramLength));
                    i--;
                }
            }
            sig.Header1 = DecodeLength();
            sig.Type    = DecodeLength();
            sig.Header3 = DecodeLength();
            sig.Name    = DecodeId();
            sig.Header5 = DecodeLiteralNumber2();
            return(sig);
        }
 public override void Decode()
 {
     bodyInfo  = DecodeLineInfo();
     signature = DecodeSignature();
     type      = DecodeLength();
 }