Arduino Internal Warning

both the two comparisons of signed/unsigned in this case are harmless as it is basically:

if (int != unsigned int)

where neither the int not the unsigned int should ever be more than 128 or less than 0.
[This is the only line of code which changes either of the two variables compared:
( + 1) % SERIAL_BUFFER_SIZE; //where SERIAL_BUFFER_SIZE is defined as 64]

In reality, its another case of the arduino core and examples loving to be wasteful of ram - they should just be bytes aka uint8_t types - the same goes for all the cases where variables are used to store pin names - for some reason they like ints when a byte is plenty sufficient.