code: public static Map<String,Collection<IConditional>> getPropertiesUndefined( FunctionInputDef function)
      {
      Map<String,Collection<IConditional>> refs = getPropertyReferences( function);
      Collection<String> undefined = CollectionUtils.subtract( refs.keySet(), getPropertySources( function).keySet());
  
      return
        refs.entrySet().stream()
        .filter( entry -> undefined.contains( entry.getKey()))
        .collect( toMap( entry -> entry.getKey(), entry -> entry.getValue()));
      }
docs: For every property in the given function input definition that is referenced but never defined,
  maps the property to the conditional elements that reference it.