anchor.diff:      : (schema=id '.')? name=id
       ;
   
  -func_proc_name_two_part
  +func_proc_name_schema
       : ((schema=id) '.')? procedure=id
       ;
   
  -func_proc_name_three_part
  -    : func_proc_name_two_part
  +func_proc_name_database_schema
  +    : func_proc_name_schema
       | (database=id '.' (schema=id)? '.')? procedure=id
       ;
   
  -func_proc_name_four_part
  -    : func_proc_three_part
  +func_proc_name_server_database_schema
  +    : func_proc_name_database_schema
       | (server=id '.' database=id '.' (schema=id)? '.')? procedure=id
       ;
   
  
positive.code: 
  // https://msdn.microsoft.com/en-us/library/ms174969.aspx
  drop_procedure
      : DROP proc=(PROC | PROCEDURE) (IF EXISTS)? func_proc_name_two_part (',' func_proc_name_two_part)* ';'?
      ;
  
  // https://docs.microsoft.com/en-us/sql/t-sql/statements/drop-trigger-transact-sql
  
negative.code: 
  // https://msdn.microsoft.com/en-us/library/ms190290.aspx
  drop_function
      : DROP FUNCTION (IF EXISTS)? func_proc_name_schema (',' func_proc_name_schema)* ';'?
      ;
  
  // https://msdn.microsoft.com/en-us/library/ms175075.aspx
  