anchor.diff:      case file:path_open(Path, File, [read]) of
   	{ok, F, Fullname} ->
   	    file:close(F),
  -	    {ok,FirstParsed} = parse(Fullname),
  +	    {ok,String} = parse_file(Fullname),
  +	    {ok,FirstParsed} = parse_string(String),
   	    Parsed = lists:append(FirstParsed, Tail),
   	    parse_imports(Parsed, Path, [Head | Acc]);
   	{error, Error} ->
  
positive.code: 			     ok | {error, _}.
  generate_source(ProtoFile,Options) when is_list (ProtoFile) ->
      Basename = filename:basename(ProtoFile, ".proto") ++ "_pb",
      {ok,FirstParsed} = parse(ProtoFile),
      ImportPaths = ["./", "src/" | proplists:get_value(imports_dir, Options, [])],
      Parsed = parse_imports(FirstParsed, ImportPaths),
      Collected = collect_full_messages(Parsed), 
  
negative.code: 		       ok | {error, _}.
  scan_file(ProtoFile,Options) when is_list(ProtoFile) ->
      Basename = filename:basename(ProtoFile, ".proto") ++ "_pb",
      {ok,String} = parse_file(ProtoFile),
      scan_string(String,Basename,Options).
      
  -spec scan_string(String :: string(), Basename :: string(), Options :: list()) ->
  			 ok | {error, _}. 
  scan_string(String,Basename,Options) ->
      {ok,FirstParsed} = parse_string(String),
      ImportPaths = ["./", "src/" | proplists:get_value(imports_dir, Options, [])],
      Parsed = parse_imports(FirstParsed, ImportPaths),
      Collected = collect_full_messages(Parsed), 
      Messages = resolve_types(Collected#collected.msg,Collected#collected.enum),
      output(Basename, Messages, Collected#collected.enum, Options).
      
  %%--------------------------------------------------------------------
  %% @doc Generats a source .erl file and header file .hrl
  %%--------------------------------------------------------------------
  