Send bytes as received for correctness.
Use RevivableInputStream to avoid blocking reads.
No need to pump from sysin for javac.
No need to pump in for check either.
Rebind only when needed.
Manually memoize to be able to warn when needed.

For instance would password reading not work as intended when this input
is rebound.