public TypeNode ApplySignature(TypeNode type) { foreach (var sig in this.signature) switch (sig) { case ByRefSignature: type = type.GetReferenceType(); break; case PointerSignature: type = type.GetPointerType(); break; case SzArraySignature: type = type.GetArrayType(1); break; default: type = type.GetArrayType(sig, true); break; } return type; }