reset drained on setReadable
fix possible null pointer
setReadable/setWritable can be called more than once
docs for multi setReadable/setWritable
docs for null usage
1.5.0