added a check to determine if a declaration is an extern function declaration (without function body)
changed renaming patterns to not rename functions which are optional (duplications will still be renamed)