internal override BoundExpression GetAddress(BoundPseudoVariable variable)
 {
     var method = GetIntrinsicMethod(_compilation, ExpressionCompilerConstants.GetVariableAddressMethodName);
     // Currently the MetadataDecoder does not support byref return types
     // so the return type of GetVariableAddress(Of T)(name As String)
     // is an error type. Since the method is only used for emit, an
     // updated placeholder method is used instead.
     Debug.Assert(method.ReturnType.TypeKind == TypeKind.Error); // If byref return types are supported in the future, use method as is.
     method = new PlaceholderMethodSymbol(
         method.ContainingType,
         method.Name,
         m => method.TypeParameters.SelectAsArray(t => (TypeParameterSymbol)new SimpleTypeParameterSymbol(m, t.Ordinal, t.Name)),
         m => m.TypeParameters[0], // return type is <>T&
         m => method.Parameters.SelectAsArray(p => (ParameterSymbol)new SynthesizedParameterSymbol(m, p.Type, p.Ordinal, p.RefKind, p.Name, p.CustomModifiers, p.CountOfCustomModifiersPrecedingByRef)));
     var local = variable.LocalSymbol;
     return InvokeGetMethod(method.Construct(local.Type), variable.Syntax, local.Name);
 }
 internal override BoundExpression GetAddress(BoundPseudoVariable variable)
 {
     var method = GetIntrinsicMethod(_compilation, ExpressionCompilerConstants.GetVariableAddressMethodName);
     // Currently the MetadataDecoder does not support byref return types
     // so the return type of GetVariableAddress(Of T)(name As String)
     // is an error type. Since the method is only used for emit, an
     // updated placeholder method is used instead.
     Debug.Assert(method.ReturnType.TypeKind == TypeKind.Error); // If byref return types are supported in the future, use method as is.
     method = new PlaceholderMethodSymbol(
         method.ContainingType,
         method.Name,
         m => method.TypeParameters.SelectAsArray(t => (TypeParameterSymbol)new SimpleTypeParameterSymbol(m, t.Ordinal, t.Name)),
         m => m.TypeParameters[0], // return type is <>T&
         m => method.Parameters.SelectAsArray(p => (ParameterSymbol)new SynthesizedParameterSymbol(m, p.Type, p.Ordinal, p.RefKind, p.Name, p.CustomModifiers)));
     var local = variable.LocalSymbol;
     return InvokeGetMethod(method.Construct(local.Type), variable.Syntax, local.Name);
 }