srecord HostAndPort(S host, int port) { *(S s) { int i = indexOf(s, ':'); if (i < 0) host = s; else { host = takeFirst(i, s); port = parseInt(dropFirst(i+1, s)); } } toString { //ret host + (port == 0 ? "" : ":" + port); ret host + ":" + port; } }