public void GenerateBody(GenerationInfo generationInfo, ClassBase implementor, string indent) { var streamWriter = generationInfo.Writer; streamWriter.WriteLine(" {"); if (!IsStatic) { implementor?.Prepare(streamWriter, $"{indent}\t\t\t"); } if (IsAccessor) { Body.InitAccessor(streamWriter, Signature, indent); } Body.Initialize(generationInfo, IsGetter, IsSetter, indent); streamWriter.Write($"{indent}\t\t\t"); if (_returnValue.IsVoid) { streamWriter.WriteLine($"{CName}{_call};"); } else { streamWriter.WriteLine($"{_returnValue.MarshalType} raw_ret = {CName}{_call};"); streamWriter.WriteLine( $"{indent}\t\t\t{_returnValue.CsType} ret = {_returnValue.FromNative("raw_ret")};"); } if (!IsStatic) { implementor?.Finish(streamWriter, $"{indent}\t\t\t"); } Body.Finish(streamWriter, indent); Body.HandleException(streamWriter, indent); if (IsGetter && Parameters.Count > 0) { streamWriter.WriteLine($"{indent}\t\t\treturn {Parameters.AccessorName};"); } else if (!_returnValue.IsVoid) { streamWriter.WriteLine($"{indent}\t\t\treturn ret;"); } else if (IsAccessor) { Body.FinishAccessor(streamWriter, Signature, indent); } streamWriter.Write($"{indent}\t\t}}"); }