// Java class com.example.Customprefix is a proxy for talking to a Go program.
//   gobind -lang=java -javapkg=com.example customprefix
//
// File is generated by gobind. Do not edit.
package com.example;

import go.Seq;

public abstract class Customprefix {
    static {
        Seq.touch(); // for loading the native library
        init();
    }
    
    private Customprefix() {} // uninstantiable
    
    // touch is called from other bound packages to initialize this package
    public static void touch() {}
    
    private static native void init();
    
    
    public static native void F();
}
