question: public static < T extends MessageLite > T parseAndClose ( InputStream inputStream , Class < T > messageClass ) throws IOException { try { Method newBuilder = messageClass . getDeclaredMethod ( "parseFrom" , InputStream . class ) ; return messageClass . cast ( newBuilder . invoke ( null , inputStream ) ) ; } catch ( Exception e ) { Throwables . propagateIfPossible ( e , IOException . class ) ; IOException io = new IOException ( "Error parsing message of type " + messageClass ) ; io . initCause ( e ) ; throw io ; } finally { inputStream . close ( ) ; } }
target:  Parses protocol buffer content from an input stream (closing the input stream) into a protocol buffer message.