protected override void WriteGetterBody(CodeWriter writer) { writer.WriteLine($"const string __id = \"{field.JavaName}.{field.Symbol.JniName}\";"); writer.WriteLine(); var invokeType = SourceWriterExtensions.GetInvokeType(field.GetMethodPrefix); var indirect = field.IsStatic ? "StaticFields" : "InstanceFields"; var invoke = "Get{0}Value"; invoke = string.Format(invoke, invokeType); writer.WriteLine($"var __v = {field.Symbol.ReturnCast}_members.{indirect}.{invoke} (__id{(field.IsStatic ? "" : ", this")});"); if (field.Symbol.IsArray) { writer.WriteLine($"return global::Android.Runtime.JavaArray<{opt.GetOutputName (field.Symbol.ElementType)}>.FromJniHandle (__v.Handle, JniHandleOwnership.TransferLocalRef);"); } else if (field.Symbol.NativeType != field.Symbol.FullName) { writer.WriteLine($"return {field.Symbol.ReturnCast}{(field.Symbol.FromNative (opt, invokeType != "Object" ? "__v" : "__v.Handle", true) + opt.GetNullForgiveness (field))};"); } else { writer.WriteLine("return __v;"); } }