public FlatRecordType createFlatRecordType(
      ServiceContext context, Flow flow, FlatFileOptions defaultOptions) {
    FlatFileOptions flatFileOptions =
        flatFileOptionsFactory.createFlatFileOptions(context, flow, defaultOptions);

    Name headerRecordTypeName = new QualifiedName(SystemConstants.SERVINGXML_NS_URI, "tag");
    NameSubstitutionExpr headerRecordTypeNameResolver =
        new SimpleNameEvaluator(headerRecordTypeName);
    FlatRecordTypeFactory sdwRecordTypeFactory =
        new FlatRecordTypeFactoryImpl(
            headerRecordTypeNameResolver,
            sdwFieldTypeFactories,
            IntegerSubstitutionExpr.NULL,
            flatFileOptionsFactory);
    FlatRecordType sdwRecordType =
        sdwRecordTypeFactory.createFlatRecordType(context, flow, defaultOptions);
    FlatRecordType[] flatRecordTypes = new FlatRecordType[recordCombinationFactories.length];
    for (int i = 0; i < recordCombinationFactories.length; ++i) {
      flatRecordTypes[i] =
          recordCombinationFactories[i].createFlatRecordType(
              context, flow, sdwRecordType, defaultOptions);
    }

    FlatRecordType defaultFlatRecordType = new VbsFlatRecordType(flatRecordTypes);
    return defaultFlatRecordType;
  }
 public FlatRecordTypeSelection createFlatRecordTypeSelection(
     ServiceContext context, Flow flow, FlatFileOptions defaultOptions) {
   FlatFileOptions flatFileOptions =
       flatFileOptionsFactory.createFlatFileOptions(context, flow, defaultOptions);
   FlatRecordType flatRecordType =
       flatRecordTypeFactory.createFlatRecordType(context, flow, flatFileOptions);
   return new FlatRecordTypeSelectionImpl(flatRecordType, testExpression);
 }
 public boolean isText() {
   return flatRecordTypeFactory.isText();
 }
 public boolean isBinary() {
   return flatRecordTypeFactory.isBinary();
 }
 public boolean isFieldDelimited() {
   return flatRecordTypeFactory.isFieldDelimited();
 }