// check if we're a stdio IO, and ensure we're not badly mutilated
if (runtime.getFileno(selfDescriptor) >= 0 && runtime.getFileno(selfDescriptor) <= 2) {
selfFile.getMainStreamSafe().clearerr();
// dup2 new fd into self to preserve fileno and references to it
originalDescriptor.dup2Into(selfDescriptor);
} else {
Stream pipeFile = selfFile.getPipeStream();
int mode = selfFile.getMode();
selfFile.getMainStreamSafe().fclose();
selfFile.setPipeStream(null);