Additions allow you to add arbitrary C# to the generated classes before they are compiled. This can be helpful for providing convenience methods or adding pure C# classes. == Adding Methods to Generated Classes == Let's say the library being bound has a Rectangle class with a constructor that takes an x and y position, and a width and length size. It will look like this: public partial class Rectangle { public Rectangle (int x, int y, int width, int height) { // JNI bindings } } Imagine we want to add a constructor to this class that takes a Point and Size structure instead of 4 ints. We can add a new file called Rectangle.cs with a partial class containing our new method: public partial class Rectangle { public Rectangle (Point location, Size size) : this (location.X, location.Y, size.Width, size.Height) { } } At compile time, the additions class will be added to the generated class and the final assembly will a Rectangle class with both constructors. == Adding C# Classes == Another thing that can be done is adding fully C# managed classes to the generated library. In the above example, let's assume that there isn't a Point class available in Java or our library. The one we create doesn't need to interact with Java, so we'll create it like a normal class in C#. By adding a Point.cs file with this class, it will end up in the binding library: public class Point { public int X { get; set; } public int Y { get; set; } }