///|
fn pdf_reader_password_error_allows_reconstruction(
  data : BytesView,
  error : @core.PdfError,
) -> Bool {
  match error {
    StartXRefExpected
    | XRefExpected
    | TrailerExpected
    | RootExpected
    | NumberExpected
    | ParseIndirectObjectExpected
    | ParseStreamExpected
    | ParseEndStreamExpected
    | ParseEndObjectExpected
    | EndOfInput
    | ParseObjectExpected
    | InvalidHexEscape
    | InvalidCursorPosition(_) => true
    XRefEntryExpected => pdf_reader_xref_entry_error_from_metadata(data)
    FilterNotSupported(_) =>
      pdf_reader_xref_metadata_error_allows_reconstruction(data, error) ||
      pdf_reader_object_stream_error_allows_reconstruction(data)
    PredictorExpected =>
      pdf_reader_xref_metadata_error_allows_reconstruction(data, error) ||
      pdf_reader_object_stream_error_allows_reconstruction(data)
    PredictorNotSupported(_) =>
      pdf_reader_xref_metadata_error_allows_reconstruction(data, error) ||
      pdf_reader_object_stream_error_allows_reconstruction(data)
    _ => false
  }
}