public static Map < String , Collection < VarBindingDef > > getPropertySources ( FunctionInputDef function ) { SetValuedMap < String , VarBindingDef > sources = MultiMapUtils . newSetValuedHashMap ( ) ; toStream ( new VarDefIterator ( function ) ) . flatMap ( var -> toStream ( var . getValues ( ) ) . map ( value -> new VarBindingDef ( var , value ) ) ) . forEach ( binding -> toStream ( binding . getValueDef ( ) . getProperties ( ) ) . forEach ( p -> sources . put ( p , binding ) ) ) ; return sources . asMap ( ) ; }
Maps every property in the given function input definition to the variable value definitions that contribute it .