I see many instances of @ sign like @package_name or @somthing in dart. Although I know the usage of some examples like @override, I can't understand why some packages(eg: @freezed) or dart syntax(eg: @immutable,@lazySingleton) use this operator and what its functionality is.