public ListIterator<ICFLibAnyObj> enumerateDetails(MssCFGenContext genContext) {
    ICFLibAnyObj genDef;
    final String S_ProcName = "enumerateDetails";

    if (genContext == null) {
      throw CFLib.getDefaultExceptionFactory()
          .newNullArgumentException(getClass(), S_ProcName, 1, "genContext");
    }

    genDef = genContext.getGenDef();
    if (genDef == null) {
      throw CFLib.getDefaultExceptionFactory()
          .newNullArgumentException(getClass(), S_ProcName, 0, "genContext.GenDef");
    }

    if (!(genDef instanceof ICFBamSchemaDefObj)) {
      throw CFLib.getDefaultExceptionFactory()
          .newUnsupportedClassException(
              getClass(), S_ProcName, "genContext.GenDef", genDef, "ICFBamSchemaDefObj");
    }

    ICFBamSchemaDefObj schemaDefObj = (ICFBamSchemaDefObj) genDef;

    List<ICFBamValueObj> schemaTypes = schemaDefObj.getOptionalComponentsTypes();

    ICFBamValueObj valueObj;
    ICFBamId64GenObj genObj;
    Iterator<ICFBamValueObj> almostDone = schemaTypes.iterator();
    List<ICFLibAnyObj> list = new LinkedList<ICFLibAnyObj>();
    while (almostDone.hasNext()) {
      valueObj = almostDone.next();
      if (valueObj instanceof ICFBamId64GenObj) {
        genObj = (ICFBamId64GenObj) valueObj;
        if (null == genObj.getOptionalLookupDispenser()) {
          list.add(genObj);
        }
      }
    }

    return (list.listIterator());
  }