// Code generated by gobind. DO NOT EDIT.

// Java class interfaces.Error is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java interfaces
package interfaces;

import go.Seq;

public interface Error {
    public void err() throws Exception;
    
}

// Code generated by gobind. DO NOT EDIT.

// Java class interfaces.I is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java interfaces
package interfaces;

import go.Seq;

public interface I {
    public int rand();
    
}

// Code generated by gobind. DO NOT EDIT.

// Java class interfaces.I1 is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java interfaces
package interfaces;

import go.Seq;

/**
 * not implementable
 */
public interface I1 {
    public void j();
    
}

// Code generated by gobind. DO NOT EDIT.

// Java class interfaces.I2 is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java interfaces
package interfaces;

import go.Seq;

/**
 * not implementable
 */
public interface I2 {
    public void g();
    
}

// Code generated by gobind. DO NOT EDIT.

// Java class interfaces.I3 is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java interfaces
package interfaces;

import go.Seq;

/**
 * implementable
(the implementor has to find a source of I1s)
 */
public interface I3 {
    public I1 f();
    
}

// Code generated by gobind. DO NOT EDIT.

// Java class interfaces.Interfaces_ is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java interfaces
package interfaces;

import go.Seq;

/**
 * Interfaces is an interface with the same name as its package.
 */
public interface Interfaces_ {
    public void someMethod();
    
}

// Code generated by gobind. DO NOT EDIT.

// Java class interfaces.LargerI is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java interfaces
package interfaces;

import go.Seq;

public interface LargerI extends I, SameI {
    public void anotherFunc();
    public int rand();
    
}

// Code generated by gobind. DO NOT EDIT.

// Java class interfaces.SameI is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java interfaces
package interfaces;

import go.Seq;

public interface SameI {
    public int rand();
    
}

// Code generated by gobind. DO NOT EDIT.

// Java class interfaces.WithParam is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java interfaces
package interfaces;

import go.Seq;

public interface WithParam {
    public void hasParam(boolean p0);
    
}

// Code generated by gobind. DO NOT EDIT.

// Java class interfaces.Interfaces is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java interfaces
package interfaces;

import go.Seq;

public abstract class Interfaces {
    static {
        Seq.touch(); // for loading the native library
        _init();
    }
    
    private Interfaces() {} // uninstantiable
    
    // touch is called from other bound packages to initialize this package
    public static void touch() {}
    
    private static native void _init();
    
    private static final class proxyError implements Seq.Proxy, Error {
        private final int refnum;
        
        @Override public final int incRefnum() {
              Seq.incGoRef(refnum, this);
              return refnum;
        }
        
        proxyError(int refnum) { this.refnum = refnum; Seq.trackGoRef(refnum, this); }
        
        public native void err() throws Exception;
    }
    private static final class proxyI implements Seq.Proxy, I {
        private final int refnum;
        
        @Override public final int incRefnum() {
              Seq.incGoRef(refnum, this);
              return refnum;
        }
        
        proxyI(int refnum) { this.refnum = refnum; Seq.trackGoRef(refnum, this); }
        
        public native int rand();
    }
    private static final class proxyI1 implements Seq.Proxy, I1 {
        private final int refnum;
        
        @Override public final int incRefnum() {
              Seq.incGoRef(refnum, this);
              return refnum;
        }
        
        proxyI1(int refnum) { this.refnum = refnum; Seq.trackGoRef(refnum, this); }
        
        public native void j();
    }
    private static final class proxyI2 implements Seq.Proxy, I2 {
        private final int refnum;
        
        @Override public final int incRefnum() {
              Seq.incGoRef(refnum, this);
              return refnum;
        }
        
        proxyI2(int refnum) { this.refnum = refnum; Seq.trackGoRef(refnum, this); }
        
        public native void g();
    }
    private static final class proxyI3 implements Seq.Proxy, I3 {
        private final int refnum;
        
        @Override public final int incRefnum() {
              Seq.incGoRef(refnum, this);
              return refnum;
        }
        
        proxyI3(int refnum) { this.refnum = refnum; Seq.trackGoRef(refnum, this); }
        
        public native I1 f();
    }
    private static final class proxyInterfaces implements Seq.Proxy, Interfaces_ {
        private final int refnum;
        
        @Override public final int incRefnum() {
              Seq.incGoRef(refnum, this);
              return refnum;
        }
        
        proxyInterfaces(int refnum) { this.refnum = refnum; Seq.trackGoRef(refnum, this); }
        
        public native void someMethod();
    }
    private static final class proxyLargerI implements Seq.Proxy, LargerI {
        private final int refnum;
        
        @Override public final int incRefnum() {
              Seq.incGoRef(refnum, this);
              return refnum;
        }
        
        proxyLargerI(int refnum) { this.refnum = refnum; Seq.trackGoRef(refnum, this); }
        
        public native void anotherFunc();
        public native int rand();
    }
    private static final class proxySameI implements Seq.Proxy, SameI {
        private final int refnum;
        
        @Override public final int incRefnum() {
              Seq.incGoRef(refnum, this);
              return refnum;
        }
        
        proxySameI(int refnum) { this.refnum = refnum; Seq.trackGoRef(refnum, this); }
        
        public native int rand();
    }
    private static final class proxyWithParam implements Seq.Proxy, WithParam {
        private final int refnum;
        
        @Override public final int incRefnum() {
              Seq.incGoRef(refnum, this);
              return refnum;
        }
        
        proxyWithParam(int refnum) { this.refnum = refnum; Seq.trackGoRef(refnum, this); }
        
        public native void hasParam(boolean p0);
    }
    
    
    public static native int add3(I r);
    public static native void callErr(Error e) throws Exception;
    public static native I seven();
}
