pub trait FunctionProperties {
fn to_source(&self, fn_name: &str) -> Properties;
fn extend_source(&mut self, fn_name: &str, properties: Properties);
fn to_window(&self, fn_name: &str) -> Properties;
fn extend_window(&mut self, fn_name: &str, properties: Properties);
fn to_reduce(&self, fn_name: &str) -> Properties;
fn extend_reduce(&mut self, fn_name: &str, properties: Properties);
fn to_filter(&self, fn_name: &str) -> Properties;
fn extend_filter(&mut self, fn_name: &str, properties: Properties);
fn to_sink(&self, fn_name: &str) -> Properties;
fn extend_sink(&mut self, fn_name: &str, properties: Properties);
fn to_custom(&self, fn_name: &str) -> Properties;
fn extend_custom(&mut self, fn_name: &str, properties: Properties);
}