controlValues(tiles, AbstractTile.CONTROL_UNUSED,
controlValues(tiles, AbstractTile.CONTROL_USED,
  private void send (int event, int tospace) {        // start the communication    space.startComm();    int numTiles = allTileNum;           // (1) Scalar Used Space stream    // send the stream data     space.stream(SS_SCALAR_USED_SPACE_STREAM, numTiles);    for (int i = 0; i < numTiles; ++i) {      space.streamIntValue(tiles[i].scalarUsedSpace);    }    space.streamEnd();    // send the summary data     space.summary(SS_SCALAR_USED_SPACE_STREAM, 2 /*items to send*/);    space.summaryValue(totalScalarUsedSpace);    space.summaryValue(subspace[tospace].getEnd().diff(subspace[tospace].getStart()).toInt());    space.summaryEnd();    // (2) Array Used Space stream    space.stream(SS_ARRAY_USED_SPACE_STREAM, numTiles);    for (int i = 0; i < numTiles; ++i) {      space.streamIntValue(tiles[i].arrayUsedSpace);    }    space.streamEnd();    space.summary(SS_ARRAY_USED_SPACE_STREAM, 2);    space.summaryValue(totalArrayUsedSpace);    space.summaryValue(subspace[tospace].getEnd().diff(subspace[tospace].getStart()).toInt());    space.summaryEnd();    // (3) Scalar Objects stream    space.stream(SS_SCALAR_OBJECTS_STREAM, numTiles);    for (int i = 0; i < numTiles; ++i) {      space.streamShortValue(tiles[i].scalarObjects);    }    space.streamEnd();    space.summary(SS_SCALAR_OBJECTS_STREAM, 1);    space.summaryValue(totalScalarObjects);    space.summaryEnd();    // (4) Array Objects stream    space.stream(SS_ARRAY_OBJECTS_STREAM, numTiles);    for (int i = 0; i < numTiles; ++i) {      space.streamShortValue(tiles[i].arrayObjects);    }    space.streamEnd();    space.summary(SS_ARRAY_OBJECTS_STREAM, 1);    space.summaryValue(totalArrayObjects);    space.summaryEnd();    // send the control info    // all of tospace is USED    controlValues(tiles, AbstractTile.CONTROL_USED,		  subspace[tospace].getFirstIndex(),		  subspace[tospace].getBlockNum());    // all of the other space is UNUSED    controlValues(tiles, AbstractTile.CONTROL_UNUSED,		  subspace[1-tospace].getFirstIndex(),		  subspace[1-tospace].getBlockNum());    // any tiles between the two spaces are BACKGROUND colour    controlValues(tiles, AbstractTile.CONTROL_BACKGROUND,		  subspace[0].getFirstIndex() + subspace[0].getBlockNum(),		  MIDDLE_TILES);    // add a separator after the end of the first semispace    controlValues(tiles, AbstractTile.CONTROL_SEPARATOR,		  subspace[1].getFirstIndex(), 		  1);    space.controlEnd(numTiles, tiles);             // send the space info and end     VM_Offset size = subspace[tospace].getEnd().diff(subspace[tospace].getStart());    sendSpaceInfoAndEndComm(size);  }