public static SixModelObject socket(long listener, ThreadContext tc) {
SixModelObject IOType = tc.curFrame.codeRef.staticInfo.compUnit.hllConfig.ioType;
IOHandleInstance h = (IOHandleInstance)IOType.st.REPR.allocate(tc, IOType.st);
if (listener == 0) {
h.handle = new SocketHandle(tc);
} else if (listener > 0) {
h.handle = new ServerSocketHandle(tc);
} else {
ExceptionHandling.dieInternal(tc,
"Socket handle does not support a negative listener value");