question: this method works around the bizarre semantics of bufferedinputstream 's read method . concode_field_sep PlaceHolder placeHolder concode_field_sep void decodeBufferPrefix concode_elem_sep ByteBuffer decodeBufferToByteBuffer concode_elem_sep ByteBuffer decodeBufferToByteBuffer concode_elem_sep void decodeBuffer concode_elem_sep byte decodeBuffer concode_elem_sep byte decodeBuffer concode_elem_sep void decodeAtom concode_elem_sep void decodeBufferSuffix concode_elem_sep int bytesPerLine concode_elem_sep int bytesPerAtom concode_elem_sep int decodeLinePrefix concode_elem_sep void decodeLineSuffix
target: int function ( InputStream arg0 , byte arg1 [ ] , int arg2 , int arg3 ) { for ( int loc0 = 0 ; loc0 < arg3 ; loc0 ++ ) { int loc1 = arg0 . read ( ) ; if ( loc1 == - 1 ) return ( ( loc0 == 0 ) ? - 1 : loc0 ) ; arg1 [ loc0 + arg2 ] = ( byte ) loc1 ; } return arg3 ; }