let inputCustomAbs () =
  let read_abs_info filename =
    let doParse inchan =
      let _ = VampyreErrormsg.startFile filename in
      let lexbuf = Lexing.from_channel inchan in
      let _ = VampyreErrormsg.theLexbuf := lexbuf in
      Absparse.main Absflex.token lexbuf 
    in
    ignore (Message.msg_string Message.Normal "Reading in abstraction ...");
    try
      let inchan = open_in filename
      in
      let a = doParse inchan
      in
      ignore (Message.msg_string Message.Normal " Abstraction read.\n") ;
      a
    with
      Sys_error _ -> (Message.msg_string Message.Error ("Cannot find abstraction info in "^filename^".\n"); ([],None,[]))
    | VampyreErrormsg.Error -> (Message.msg_string Message.Error ("Error raised in reading abstraction \n"); ([],None,[]))
  in
  let abs_file = Options.getValueOfString "custom" in
  if (abs_file = ""then
    ([],None,[]) (* no special types nothing at all ... *)
  else
    read_abs_info abs_file