If M is a direct sum module (isDirectSum M == true) then N is the direct sum of the duals of the components (and this is done recursively). This SHOULD be built into dual M, but isn't as of M2, v. 1.7

- HomWithComponents -- computes Hom, preserving direct sum information
- tensorWithComponents -- forms the tensor product, preserving direct sum information

- dualWithComponents(Module)

The object dualWithComponents is a method function.