You are assuming a StreamCloser will never be added in runtime right? I think thats a valid/pragmatic assumption, but it's worth thinking if there are any cases where this might happen just in case.  Also this should be noted in the javadoc.