protected void compileNext(PrintWriter out, boolean debug) throws CompileException {
   for (Connector c : connectors) {
     if (c.isOutgoing() && c.hasConnection()) {
       c.getConnection().compile(out, debug);
     } else if (c.isOutgoing()) {
       Log.i("Tern", "couldn't complete after " + this.name);
       this.LAST = true;
     }
   }
 }
 public void connect(Statement other) {
   for (Connector plug : connectors) {
     if (plug.isOutgoing() || plug.isParameter()) {
       for (Connector socket : other.connectors) {
         if (socket.isIncoming()) {
           if (socket.overlaps(plug)) {
             plug.setConnection(other);
             socket.setConnection(other);
           }
         }
       }
     }
   }
 }
 public Statement getFirstOutgoingConnection() {
   for (Connector c : connectors) {
     if (c.isOutgoing()) return c.getConnection();
   }
   return null;
 }
 public boolean hasOutgoingConnection() {
   for (Connector c : connectors) {
     if (c.isOutgoing() && c.hasConnection()) return true;
   }
   return false;
 }