anchor.diff:             then functor.type mt1 mt2
              else null;
         functor = (defaultFunctor name) // { wrapped = [ t1 t2 ]; };
  +      nestedTypes.left = t1;
  +      nestedTypes.right = t2;
       };
   
       # Any of the types in the given list
  
positive.code:       getSubModules = elemType.getSubModules;
        substSubModules = m: listOf (elemType.substSubModules m);
        functor = (defaultFunctor name) // { wrapped = elemType; };
      };
  
      nonEmptyListOf = elemType:
  
negative.code:         substSubModules = m: submoduleWith (attrs // {
            modules = m;
          });
          nestedTypes = lib.optionalAttrs (freeformType != null) {
            freeformType = freeformType;
          };
          functor = defaultFunctor name // {
            type = types.submoduleWith;
            payload = {
  