anchor.diff:  
   
   compute_extension(SourceFilename, Extension) ->
  -  if
  -    compiler_for(Extension) && is_extension_defined(compiler_for(Extension)) ->
  -      compiler_for(Extension).expected_extension(SourceFilename);
  -    true -> Extension
  +  case is_valid_extension(Extension) of
  +    true ->
  +      Compiler = compiler_for(Extension),
  +      Compiler:expected_extension(SourceFilename);
  +    _ -> Extension
     end.
  +
  +is_valid_extension(Extension) ->
  +  compiler_for(Extension) and is_extension_defined(compiler_for(Extension)).
   
   
   is_extension_defined(Module)->
  
positive.code:   {KnownExtensions, UnknownExtensions} = group_extensions( tl(Parts) ),
  
    ReversedUnknownExtensions = if
      UnknownExtensions != [] ->
        UnknownExtensions = lists:reverse(UnknownExtensions);
      true -> []
    end,
  
negative.code: 
  
  group_extensions([]) ->
    {[], []};
  group_extensions(Extensions) ->
    ReversedExtensions = lists:reverse(Extensions),
    PartitionFunction = fun(Extension)->
      lists:member(Extension, proplists:get_keys(compilers()) )
    end,
    lists:partition(PartitionFunction, ReversedExtensions).
  