Many Function implementation classes are public; causing confusion when users go to look for how to do things.

  1. Change function implementations to be package visible; so test cases and factory instances can still work with them
  2. Any function that requires interaction is probably broken; many of the collection functions are broken in this manner

Update 2014: We are in position to act on this one due to use of FunctionName fully describing attributes and FunctionFactory being available as an integration point for SPI. To act on this technical debt we would need to make all function implementations package visible (and thus only available via their factory method).